anchor.diff:            }
             break;
         }
  -      canvas.drawImageRect(image, Point.origin & src, rect.topLeft & dst, new Paint());
  +      Paint paint = new Paint();
  +      if (backgroundImage.colorFilter != null)
  +        paint.setColorFilter(backgroundImage.colorFilter);
  +      canvas.drawImageRect(image, Point.origin & src, rect.topLeft & dst, paint);
       }
     }
   
  
positive.code: class BackgroundImage {
    final BackgroundFit fit;
    final BackgroundRepeat repeat;
    BackgroundImage({
      Future<sky.Image> image,
      this.fit: BackgroundFit.scaleDown,
      this.repeat: BackgroundRepeat.noRepeat
    }) {
      image.then((resolvedImage) {
        if (resolvedImage == null)
  
negative.code:   }
  
    void _paintBackgroundImage(sky.Canvas canvas, Rect rect) {
      final BackgroundImage backgroundImage = _decoration.backgroundImage;
      if (backgroundImage == null)
        return;
      sky.Image image = backgroundImage.image;
      if (image != null) {
        Size bounds = rect.size;
        Size imageSize = backgroundImage._size;
        Size src;
        Size dst;
        switch(backgroundImage.fit) {
          case BackgroundFit.fill:
            src = imageSize;
            dst = bounds;
  