Round translation in canvas setTransform

The translation in setTransform should be rounded to the nearest pixel, since canvas implementations deal with fractional coordinates inconsistently.

This helps out #711, but zoomed canvases will still have these types of artifacts.

*e:* I guess I should note that this doesn't actually round the pixels, but I think all we care about is that they're integral.