anchor.diff:  }
   
   class WebGLCanvasTexture {
  +  static bool _isPowerOfTwo(int x) => (x & (x - 1)) == 0x00;
  +  static int _nextHighestPowerOfTwo(int x) {
  +    --x;
  +    for(int i = 1; i < 32; i <<= 1) {
  +      x = x | x >> i;
  +    }
  +    return x + 1;
  +  }
  +
     CanvasElement canvas;
     CanvasRenderingContext2D ctx;
   
  
positive.code:     } else {
        gl.pixelStorei(GL.UNPACK_FLIP_Y_WEBGL, 0);
      }
      gl.texImage2DCanvas(GL.TEXTURE_2D, 0, this.internal_format, this.format, this.type, this.canvas);
      gl.generateMipmap(GL.TEXTURE_2D);
      gl.bindTexture(GL.TEXTURE_2D, null);
  
negative.code:     } else {
        gl.pixelStorei(GL.UNPACK_FLIP_Y_WEBGL, 0);
      }
      gl.texParameteri(GL.TEXTURE_2D, GL.TEXTURE_WRAP_S, GL.MIRRORED_REPEAT);
      gl.texParameteri(GL.TEXTURE_2D, GL.TEXTURE_WRAP_T, GL.MIRRORED_REPEAT);
      gl.texParameteri(GL.TEXTURE_2D, GL.TEXTURE_MIN_FILTER, GL.LINEAR);
      gl.texParameteri(GL.TEXTURE_2D, GL.TEXTURE_MAG_FILTER, GL.LINEAR);
      gl.texImage2DCanvas(GL.TEXTURE_2D, 0, this.internal_format, this.format, this.type, this.canvas);
  