When translating the image, why do we use the back-buffered preview as opposed to just loading a larger section of the image behind the scenes and translating that? Once it's been translated too far, we can load additional sections of image. At the very least, we should just be able to pan the part that's on the screen and have rough previews only for the sections that aren't loaded yet. Why throw away the nicely rendered parts we already have?

On a lesser scale this is also a problem for zooming images. Instead of using the extremely rough preview, can't the existing view be used and interpolated before the newly zoomed image is loaded? This is especially true of zooming in, where the viewport already contains an image much closer to the next desired view than the strongly pixelated preview.

These are the visual details that, if done properly, will allow people to forget that they're using a program at all and really let them focus on what they're doing.

I'm digging around in the code trying to figure out how all the pieces fit together before I attempt to look at this. If you can point me to a few key areas I can see what sort of improvements I can bring about in these areas.