anchor.diff:      final PaintingCanvas canvas = context.canvas;
       // Choose a color between grey and the theme color
       sky.Paint paint = new sky.Paint()
  -      ..strokeWidth = 2.0
  +      ..strokeWidth = _kStrokeWidth
         ..color = uncheckedColor;
   
  -    // The rrect contracts slightly during the animation
  +    // The rrect contracts slightly during the transition animation from checked states.
  +    // Because we have a stroke size of 2, we should have a minimum 1.0 inset.
       double inset = 2.0 - (position - _kMidpoint).abs() * 2.0;
  -    sky.Rect rect = new sky.Rect.fromLTWH(offset.dx + inset, offset.dy + inset,
  -        _kEdgeSize - inset, _kEdgeSize - inset);
  +    double rectSize = _kEdgeSize - inset * _kStrokeWidth;
  +    sky.Rect rect =
  +      new sky.Rect.fromLTWH(offset.dx + inset, offset.dy + inset, rectSize, rectSize);
  +    // Create an inner rectangle to cover inside of rectangle. This is needed to avoid
  +    // painting artefacts caused by overlayed paintings.
  +    sky.Rect innerRect = rect.deflate(1.0);
       sky.RRect rrect = new sky.RRect()
         ..setRectXY(rect, _kEdgeRadius, _kEdgeRadius);
   
  
positive.code: const double _kMidpoint = 0.5;
  const sky.Color _kLightUncheckedColor = const sky.Color(0x8A000000);
  const sky.Color _kDarkUncheckedColor = const sky.Color(0xB2FFFFFF);
  const double _kEdgeSize = 20.0;
  const double _kEdgeRadius = 1.0;
  
  /// A material design checkbox
  ///
  
negative.code:         const sky.Color(0x00000000),
          uncheckedColor
        ]));
        canvas.drawRect(innerRect, paint);
      }
  
      if (position > _kMidpoint) {
        double t = (position - _kMidpoint) / (1.0 - _kMidpoint);
  
        // First draw a rounded rect outline then fill inner rectangle with accent color.
        paint.color = new Color.fromARGB((t * 255).floor(), _accentColor.red,
            _accentColor.green, _accentColor.blue);
        paint.setStyle(sky.PaintingStyle.stroke);
        canvas.drawRRect(rrect, paint);
        paint.setStyle(sky.PaintingStyle.fill);
        canvas.drawRect(innerRect, paint);
  
        // White inner check
        paint.color = const sky.Color(0xFFFFFFFF);
        paint.setStyle(sky.PaintingStyle.stroke);
        sky.Path path = new sky.Path();
        sky.Point start = new sky.Point(_kEdgeSize * 0.15, _kEdgeSize * 0.45);
        sky.Point mid = new sky.Point(_kEdgeSize * 0.4, _kEdgeSize * 0.7);
        sky.Point end = new sky.Point(_kEdgeSize * 0.85, _kEdgeSize * 0.25);
        Point lerp(Point p1, Point p2, double t) =>
            new Point(p1.x * (1.0 - t) + p2.x * t, p1.y * (1.0 - t) + p2.y * t);
        sky.Point drawStart = lerp(start, mid, 1.0 - t);
  