> BTW, I do realize that scale() is used primarily for thumbnails, but if we do want it to be used in engine code too, it might be a good idea to move it outside of thumbnail.* and into, say, surface.* ? Its placement in thumbnail.* is a bit out of place, IMHO

It is primarily used for thumbnails? I didn't know that. I thought it was used in the event recorder (frankly for displaying the screenshots in the recorder GUI) and in sword25.