Move zooming support from webgl canvSize hack to the vertex shaders

An important side-effect is that zooming happens to the center of the image.
webgl: Adjust canvas height to keep texture's aspect ratio