anchor.diff:      switch (location) {
         case BannerLocation.bottomRight:
         case BannerLocation.bottomLeft:
  -        return height - kBottomOffset;
  +        return height - _kBottomOffset;
         case BannerLocation.topRight:
         case BannerLocation.topLeft:
           return 0.0;
  
positive.code: import 'basic.dart';
  import 'framework.dart';
  
  enum BannerLocation { topRight, topLeft, bottomRight, bottomLeft }
  
  class BannerPainter extends CustomPainter {
    const BannerPainter({
      this.message,
      this.location
    });
  
    final String message;
    final BannerLocation location;
  
    static const Color kColor = const Color(0xA0B71C1C);
    static const double kOffset = 40.0; // distance to bottom of banner, at a 45 degree angle inwards
    static const double kHeight = 12.0; // height of banner
    static const double kBottomOffset = kOffset + 0.707 * kHeight; // offset plus sqrt(2)/2 * banner height
    static const double kFontSize = kHeight * 0.85;
    static const double kShadowBlur = 4.0; // shadow blur sigma
    static final Rect kRect = new Rect.fromLTWH(-kOffset, kOffset - kHeight, kOffset * 2.0, kHeight);
    static const TextStyle kTextStyles = const TextStyle(
      color: const Color(0xFFFFFFFF),
      fontSize: kFontSize,
      fontWeight: FontWeight.w900,
      textAlign: TextAlign.center,
      height: 1.0
    );
  
    @override
    void paint(Canvas canvas, Size size) {
      final Paint paintShadow = new Paint()
        ..color = const Color(0x7F000000)
        ..maskFilter = new MaskFilter.blur(BlurStyle.normal, kShadowBlur);
      final Paint paintBanner = new Paint()
        ..color = kColor;
      canvas
        ..translate(_translationX(size.width), _translationY(size.height))
        ..rotate(_rotation)
        ..drawRect(kRect, paintShadow)
        ..drawRect(kRect, paintBanner);
  
      final TextPainter textPainter = new TextPainter()
        ..text = new TextSpan(style: kTextStyles, text: message)
        ..layout(maxWidth: kOffset * 2.0);
  
      textPainter.paint(canvas, kRect.topLeft.toOffset() + new Offset(0.0, (kRect.height - textPainter.height) / 2.0));
    }
  
    @override
  
negative.code:   }
  }
  
  /// Displays a diagonal message above the corner of another widget.
  ///
  /// Useful for showing the execution mode of an app (e.g., that asserts are
  /// enabled.)
  ///
  /// See also:
  ///
  ///  * [CheckedModeBanner]
  class Banner extends StatelessWidget {
    /// Creates a banner.
    ///
    /// The message and location arguments are required.
    Banner({
      Key key,
      this.child,
      this.message,
      this.location
    }) : super(key: key) {
      assert(message != null);
      assert(location != null);
    }
  
    /// The widget to show behind the banner.
    final Widget child;
  
    /// The message to show in the banner.
    final String message;
  
    /// Where to show the banner (e.g., the upper right corder).
    final BannerLocation location;
  
    @override
  