Lossy?
Are you working with true colors when making your thumbnails?
Check out this (somewhat sloppy) thumbnail code that I'm using...
http://flareupload.pleh.net/quickthumb.txt It creates true-color PNG thumbnails out of anything GD can read. Pass mkthumb the source directory (of the main image), the target directory (where thumbs are stored), the filename of the image in the source directory, and an optional flag to force recreation of the thumbnail.
Right now all the error checking bits at the bottom are commented out so that it won't kill the script when trying to thumbnail, say, a text file.
The thumbnail viewer calls this function for every large file it finds, thus creating the new thumbnails on the fly... no need to run it as a separate app.
(FlareUpload is pretty nifty, ain't it?

)