Canvas sorta working

Image upload to GPU is terrible, blending is wrong, etc, but it
sorta kinda works.