The canvas now resizes properly and smoothly. Also, the contents don't pixelate anymore.

This all works because we are using an internal representation now. This commit fixes #48.
Merge branch 'canvas-rework'