I changed it, and it gave me a nicer flooding and still created an image, so it was definitely better code, however I still am not reaching the cout statement in my destructor and still have the overflow.
If there a reason why you can't use a 2D std::vector instead of a 2D C-style newed array?
The STL is designed to be less of a micro-management issue. Memory management is built into the class.
Creating a variable sized array with std::vector, even if it is 2D, is easy to do at run-time. And once created the elements can be accessed using operator[], the same as element access is done with the C-style array.
A std::vector has the added advantage of being able to keep track of its size, a very useful feature when passed into a function.
So....you don't want to use well-written constructs that were designed to help prevent the myriad of problems you are encountering, and will likely run across in the future.