If necessary, scale canvas on creation

If you call `viewport.scale` before a canvas is created, it will silently fail despite setting `_zoom`.  This patch checks `_zoom` when the canvas is created, and scales the context if necessary.

This should fix #390