uses a <canvas> instead of a canvas <div>