anchor.diff:    WEBGL.RenderingContext gl;
   
     WEBGL.Framebuffer framebuffer;
  -  WEBGL.Renderbuffer renderbuffer;
  +  //WEBGL.Renderbuffer renderbuffer;
     TypedTexture colorTexture;
     TypedTexture depthTexture;
     var depthTextureExt;
   
  -  ChronosFramebuffer(this.gl, width, height) {
  +  ChronosFramebuffer(this.gl, width, height, [colorFormat = WEBGL.RGB]) {
       depthTextureExt = GetGlExtensionDepth(gl);
       // http://blog.tojicode.com/2012/07/using-webgldepthtexture.html
       if (depthTextureExt == null) {
  
positive.code:     }
      return result;
    }
    
    // e.g. into Float32List
    void ExtractData(var buf, int x, int y, int w, int h) {
      gl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
      int implFormat =
          gl.getParameter(WEBGL.RenderingContext.IMPLEMENTATION_COLOR_READ_FORMAT);
      int implType =
          gl.getParameter(WEBGL.RenderingContext.IMPLEMENTATION_COLOR_READ_TYPE);
      gl.readPixels(x, y, w, h, implFormat, implType, buf);
      gl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
    }
  }
  
negative.code:     framebuffer = gl.createFramebuffer();
  
      colorTexture = new TypedTexture(
          "frame::color", width, height, colorFormat, WEBGL.UNSIGNED_BYTE);
      colorTexture.Install(gl);
      depthTexture = new TypedTexture("frame::depth", width, height,
          WEBGL.DEPTH_COMPONENT, WEBGL.UNSIGNED_SHORT);
  