It gives me no errors (and it actually returns TRUE), but when I try to use $final_image in any other function (such as imagedestroy() which only takes 1 parameter) I get the error that the supplied argument is not a valid Image resource.
GD is installed. Also all the parameters in the code above ($base_image, $watermark_image, $dest_x, etc) are valid and working.
What am I missing here!? How can the function return TRUE but not actually create a valid image resource?
Ah! It seems I had a fundamental misunderstanding of how the function worked. I was passing $final_image along as the image resource in the functions that followed.