anchor.diff:      assert(painter != null);
       _stopRecordingIfNeeded();
       _appendLayer(childLayer);
  -    final PaintingContext childContext = new PaintingContext._(childLayer, childPaintBounds ?? canvasBounds);
  +    final PaintingContext childContext = new PaintingContext._(childLayer, childPaintBounds ?? estimatedBounds);
       painter(childContext, offset);
       childContext._stopRecordingIfNeeded();
     }
  
positive.code: 
    void _startRecording() {
      assert(!_isRecording);
      _currentLayer = new PictureLayer(canvasBounds);
      _recorder = new ui.PictureRecorder();
      _canvas = new Canvas(_recorder, canvasBounds);
      _containerLayer.append(_currentLayer);
    }
  
  
negative.code:   /// The current canvas can change whenever you paint a child using this
    /// context, which means it's fragile to hold a reference to the canvas
    /// returned by this getter.
    Canvas get canvas {
      if (_canvas == null)
        _startRecording();
  