drawing pixels outside of the canvas does not make a lot of sense
improving performance a tiny bit by drawing sandy and watery stuff in separate systems, thus reducing calls to ctx.fillStyle