anchor.diff:          return;
         }
   
  -      Paint paint = new Paint()
  -        ..color = new Color.fromARGB(a, 0, 0, 0)
  -        ..setTransferMode(sky.TransferMode.srcOver);
  -      canvas.saveLayer(null, paint);
  +      canvas.saveLayer(null, _paint);
         canvas.paintChild(child, offset.toPoint());
         canvas.restore();
       }
  
positive.code:       canvas.scale(widthScale, heightScale);
        offset = Offset.zero;
      }
      Paint paint = new Paint();
      canvas.drawImage(_image, offset.toPoint(), paint);
      if (needsScale)
        canvas.restore();
    }
  
negative.code:     if (_transferMode == value)
        return;
      _transferMode = value;
      _cachedPaint = null;
      markNeedsPaint();
    }
  
    Paint _cachedPaint;
    Paint get _paint {
      if (_cachedPaint == null) {
        _cachedPaint = new Paint()
          ..setColorFilter(new sky.ColorFilter.mode(_color, _transferMode));
      }
      return _cachedPaint;
    }
  
    void paint(PaintingCanvas canvas, Offset offset) {
      if (child != null) {
        canvas.saveLayer(offset & size, _paint);
        canvas.paintChild(child, offset.toPoint());
        canvas.restore();
      }
  