If you zoom in on an area that you filled in from a lower zoom level then the edge pixels have clearly been interpolated:

This is happening either on the scaling up of the image to match the classCanvas size - or on the downsizing of the class canvas to the zoomed image. I think it may be the latter because if I draw while zoomed in it's crisp:

not sure though. Probably ought to look at what the actual arrays look like.