the problem is in the second png case, exactly in
imagepng($thumbnail_gd_image, $thumbnail_image_path, 90);
according to imagepng function
quality
Compression level: from 0 (no compression) to 9.
so, change 90 to 9 (for example)
imagepng($thumbnail_gd_image, $thumbnail_image_path, 9);