Zoom function implemented. See comments in the code for guidance.

A bug with the width/height decrease is also fixed. We stop the user decreasing the canvas in negative values (actually less than 101px which is the minimum height/width allowed in our case).