[gfx] Point nativeImageData at the Context2D rather than the Canvas.

This would fix #63. It's a little strange that `nativeImageData` hold types of either Image and/or the canvas/context, but I left that behavior as-is for now, assuming it's there to avoid unnecessary conversion between Image and a canvas, since we can render both directly to a context.
In this particular rendering context, texture may just be an image, in which case it doesn't have a canvas, so some part of the code path has to account for that.