I have noticed that odd-sized sprites have their dimensions evened out when hitting 'Correct' or calling MakePixelPerfect(), so an underlying texture might be 39×39 pixels, but its sprite dimensions become 40×40. I see that this is deliberate, as this does indeed result in the sprite being pixel perfect.
However, these even dimensions do
not result in pixel perfect sprites when the reference atlas is replaced with the HD atlas (with 0.5 pixel size). In this instance, an underlying HD texture might be 78×78 (i.e., 39 * 2), and its dimensions are 'corrected' to 40×40, but this is not pixel perfect. In fact, the dimensions which do result in a pixel perfect HD sprite are 39×39 – half of 78×78, as you'd expect.
How can I resolve this issue? It seems my options at present are to either sacrifice pixel perfection in HD or to manually correct dimensions and sacrifice pixel perfection in SD.
I have uploaded a very simple test case project with a README detailing steps to replicate. Please download here:
https://www.dropbox.com/s/c1vfwoupcfi2lpq/NGUI%20Pixel%20Perfect%20Playground.zip. It is password protected, so you need not fear for unpaid users getting their hands on NGUI. Michael, I have PMd you the password to extract.
Your assistance on this would be hugely appreciated. I'm on a tight deadline and anything you can do to help might just save my life.