anchor.diff:    }
   
     void _updateBlending(Blending blending) {
  -    if (blending != null && !identical(blending, _blending)) {
  +    if (blending != null) {
         if (!_blendingEnabled) {
           _context.enable(WebGL.BLEND);
           _blendingEnabled = true;
         }
   
  -      if (blending.colorFunction != _blending.colorFunction ||
  -          blending.alphaFunction != _blending.alphaFunction) {
  -        _context.blendEquationSeparate(
  -            _blendingFunctionMap[blending.colorFunction],
  -            _blendingFunctionMap[blending.alphaFunction]);
  -      }
  -
  -      if (blending.sourceColorFactor != _blending.sourceColorFactor ||
  -          blending.sourceAlphaFactor != _blending.sourceAlphaFactor ||
  -          blending.destinationColorFactor != _blending.destinationColorFactor ||
  -          blending.destinationAlphaFactor != _blending.destinationAlphaFactor) {
  -        _context.blendFuncSeparate(
  -            _blendingFactorMap[blending.sourceColorFactor],
  -            _blendingFactorMap[blending.destinationColorFactor],
  -            _blendingFactorMap[blending.sourceAlphaFactor],
  -            _blendingFactorMap[blending.destinationAlphaFactor]);
  -      }
  -
  -      _blending = blending;
  +      if (!identical(blending, _blending)) {
  +        if (blending.colorFunction != _blending.colorFunction ||
  +            blending.alphaFunction != _blending.alphaFunction) {
  +          _context.blendEquationSeparate(
  +              _blendingFunctionMap[blending.colorFunction],
  +              _blendingFunctionMap[blending.alphaFunction]);
  +        }
  +
  +        if (blending.sourceColorFactor != _blending.sourceColorFactor ||
  +            blending.sourceAlphaFactor != _blending.sourceAlphaFactor ||
  +            blending.destinationColorFactor !=
  +                _blending.destinationColorFactor ||
  +            blending.destinationAlphaFactor !=
  +                _blending.destinationAlphaFactor) {
  +          _context.blendFuncSeparate(
  +              _blendingFactorMap[blending.sourceColorFactor],
  +              _blendingFactorMap[blending.destinationColorFactor],
  +              _blendingFactorMap[blending.sourceAlphaFactor],
  +              _blendingFactorMap[blending.destinationAlphaFactor]);
  +        }
  +
  +        _blending = blending;
  +      }
       } else if (blending == null && _blendingEnabled) {
         _context.disable(WebGL.BLEND);
         _blendingEnabled = false;
  
positive.code:   }
  
    void _updateFaceCulling(CullingMode faceCulling) {
      if (faceCulling != null && faceCulling != _faceCulling) {
        if (!_faceCullingEnabled) {
          _context.enable(WebGL.CULL_FACE);
          _faceCullingEnabled = true;
        }
  
        _context.cullFace(_cullingModeMap[faceCulling]);
        _faceCulling = faceCulling;
      } else if (faceCulling == null && _faceCullingEnabled) {
        _context.disable(WebGL.CULL_FACE);
        _faceCullingEnabled = false;
  
negative.code:   }
  
    void _updateDepthTest(DepthTest depthTest) {
      if (depthTest != null) {
        if (!_depthTestEnabled) {
          _context.enable(WebGL.DEPTH_TEST);
          _depthTestEnabled = true;
        }
  
        if (!identical(depthTest, _depthTest)) {
          if (depthTest.testFunction != _depthTest.testFunction) {
            _context.depthFunc(_testFunctionMap[depthTest.testFunction]);
          }
  
          if (depthTest.rangeNear != _depthTest.rangeNear ||
              depthTest.rangeFar != _depthTest.rangeFar) {
            _context.depthRange(depthTest.rangeNear, depthTest.rangeFar);
          }
  
          if (depthTest.write != _depthTest.write) {
            _context.depthMask(depthTest.write);
          }
  
          _depthTest = depthTest;
        }
      } else if (depthTest == null && _depthTestEnabled) {
        _context.disable(WebGL.DEPTH_TEST);
        _depthTestEnabled = false;
  