One possible reason for this is that SaveImages works by grabbing a snapshot of the DisplayDataOnImage module window. This means that it grabs a picture of the window at the resolution it’s displayed on screen, and not the original resolution of the loaded image.
So if the original image was 1024x768 pixels to begin with, but is the window that displays the overlaid image is only 384x512 pixels on screen (half the size of the original), it will be saved at the smaller size and there is a resolution loss. The reason why it looks better when you expand it with your mouse is that you are then increasing the module window size closer to what the original image was.
I hope this answers your question. Unfortunately, other than maximizing the module window with the image (as you’ve been doing) and then saving it, CellProfiler doesn’t include this ability up front. This sound like a good feature to add for the next release.