Keeping a canvas ImageBuffer updated

Update after rethinking my approach:

In the end, it made more sense for me to just maintain the Canvas myself, as I’m not planning to do anything further with the Image:

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, canvas.width, canvas.height,
              0, gl.RGBA, gl.UNSIGNED_BYTE, canvas);

The issue I was having with transparency involved Lime not re-premultiplying alpha when the Canvas was updated. That was just a matter of using:

gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);

So I’m all set for now!
Though I still think my first comment at the top of my last post may still be an even better way forward in the future?