Discrete zoom in/out using the mouse in the canvas

Feature request is here if anyone stumbles on this post.