WebGL by default does not preserve the contents of the canvas across draw calls like canvas 2d does. To fix this you need to pass in {preserveDrawingBuffer: true} to getContext