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: /// New [PaintingContext] objects are created automatically when using
  /// [PaintingContext.repaintCompositedChild] and [pushLayer].
  class PaintingContext {
    PaintingContext._(this._containerLayer, this.estimatedBounds)
      : assert(_containerLayer != null),
        assert(estimatedBounds != null);
  
    final ContainerLayer _containerLayer;
  
    /// An estimate of the bounds within which the painting context's [canvas]
    /// will record painting commands.  This can be useful for debugging.
    ///
    /// The canvas will allow painting outside these bounds.
    ///
    /// The [estimatedBounds] rectangle is in the [canvas] coordinate system.
    final Rect estimatedBounds;
  
    /// Repaint the given render object.
    ///
  