I don't have the GD gif that you start with, but my guess from looking at the code, is that you are giving the wrong dimensional information in your $photo_file1 options. This is consistent with your Chatterbox description that if you resize the image, the distortion is less. Use the following code to get the real height and width of your GD produced gif.
in reply to Gif image corrupted
P.S. Also, please put a problem description in your original question, so others who didn't see the Chatterbox stuff, will know what your problem is.
my $image = GD::Image->newFromJpeg("frontpage.jpg");
my ($width,$height) = $image->getBounds();