anchor.diff:  
     Color get uiColor {
       Float32List c = displayColor;
  -    return Color.fromRGBO(
  -        (c[0] * 255.0).round(),
  -        (c[1] * 255.0).round(),
  -        (c[2] * 255.0).round(),
  -        c[3] * artboard.modulateOpacity * opacity * shape.renderOpacity);
  +    double o = (artboard.modulateOpacity * opacity * shape.renderOpacity)
  +        .clamp(0.0, 1.0)
  +        .toDouble();
  +    return Color.fromRGBO((c[0] * 255.0).round(), (c[1] * 255.0).round(),
  +        (c[2] * 255.0).round(), c[3] * o);
     }
   
     set uiColor(Color c) {
  
positive.code:               .toDouble());
      } else {
        Float32List overrideColor = artboard.overrideColor;
        paintColor = ui.Color.fromRGBO(
            (overrideColor[0] * 255.0).round(),
            (overrideColor[1] * 255.0).round(),
            (overrideColor[2] * 255.0).round(),
            overrideColor[3] *
                artboard.modulateOpacity *
                opacity *
                shape.renderOpacity);
      }
  
      _paint
  
negative.code:               .toDouble());
      } else {
        Float32List overrideColor = artboard.overrideColor;
        double o = (overrideColor[3] *
                artboard.modulateOpacity *
                opacity *
                shape.renderOpacity)
            .clamp(0.0, 1.0)
            .toDouble();
        paintColor = ui.Color.fromRGBO(
            (overrideColor[0] * 255.0).round(),
            (overrideColor[1] * 255.0).round(),
            (overrideColor[2] * 255.0).round(),
            o);
      }
  
      _paint
  