anchor.diff:    Float32List ExtractFloatData(Float32List buf, int x, int y, int w, int h) {
       _cgl.bindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
       final FramebufferFormat f = new FramebufferFormat.fromActive(_cgl);
  -    print("$f");
  -    assert(f.type == GL_FLOAT);
  +    print("READ FORMAT $f");
  +    if (f.type != GL_FLOAT) {
  +      print("unexpcted non float type: $f");
  +    }
       if (buf == null) {
         buf = new Float32List(f.channels * w * h);
       }
  -    _cgl.readPixels(x, y, w, h, f.format, f.type, buf);
  +    _cgl.readPixels(x, y, w, h, f.format, GL_FLOAT, buf);
       _cgl.bindFramebuffer(GL_FRAMEBUFFER, null);
       return buf;
     }
  
positive.code: 
    @override
    String toString() {
      return "FB-FMT: ${format} [${channels}] ${type}";
    }
  }
  
  
negative.code:   Uint8List ExtractByteData(Uint8List buf, int x, int y, int w, int h) {
      _cgl.bindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
      final FramebufferFormat f = new FramebufferFormat.fromActive(_cgl);
      print("READ FORMAT $f");
      assert(f.type == GL_UNSIGNED_BYTE);
      if (buf == null) {
        buf = new Uint8List(f.channels * w * h);
      }
      _cgl.readPixels(x, y, w, h, f.format, f.type, buf);
      _cgl.bindFramebuffer(GL_FRAMEBUFFER, null);
      return buf;
    }
  }
  