Revert "Update Color to do all calculations with floating point components" (#55153)

Reverts flutter/engine#54981

This is causing failures in customer tests that need to be updated:
https://github.com/flutter/flutter/pull/155107/checks?check_run_id=30069840819
diff --git a/flutter_frontend_server/test/to_string_test.dart b/flutter_frontend_server/test/to_string_test.dart
index 770f586..ca1f14c 100644
--- a/flutter_frontend_server/test/to_string_test.dart
+++ b/flutter_frontend_server/test/to_string_test.dart
@@ -60,8 +60,7 @@
     ]));
     final runResult = io.Process.runSync(dart, <String>[regularDill]);
     checkProcessResult(runResult);
-    var paintString =
-      '"Paint.toString":"Paint(Color(alpha: 1.0000, red: 1.0000, green: 1.0000, blue: 1.0000, colorSpace: ColorSpace.sRGB))"';
+    var paintString = '"Paint.toString":"Paint(Color(0xffffffff))"';
     if (buildDir.contains('release')) {
       paintString = '"Paint.toString":"Instance of \'Paint\'"';
     }
diff --git a/lib/ui/lerp.dart b/lib/ui/lerp.dart
index b90e8a7..5b17fe8 100644
--- a/lib/ui/lerp.dart
+++ b/lib/ui/lerp.dart
@@ -37,3 +37,15 @@
 double _lerpInt(int a, int b, double t) {
   return a + (b - a) * t;
 }
+
+/// Same as [num.clamp] but specialized for non-null [int].
+int _clampInt(int value, int min, int max) {
+  assert(min <= max);
+  if (value < min) {
+    return min;
+  } else if (value > max) {
+    return max;
+  } else {
+    return value;
+  }
+}
diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart
index 6a171e7..202f499 100644
--- a/lib/ui/painting.dart
+++ b/lib/ui/painting.dart
@@ -48,8 +48,8 @@
   return true;
 }
 
-Color _scaleAlpha(Color x, double factor) {
-  return x.withValues(alpha: clampDouble(x.a * factor, 0, 1));
+Color _scaleAlpha(Color a, double factor) {
+  return a.withAlpha((a.alpha * factor).round().clamp(0, 255));
 }
 
 /// An immutable 32 bit color value in ARGB format.
@@ -310,11 +310,10 @@
   ///
   /// See <https://en.wikipedia.org/wiki/Relative_luminance>.
   double computeLuminance() {
-    assert(colorSpace != ColorSpace.extendedSRGB);
     // See <https://www.w3.org/TR/WCAG20/#relativeluminancedef>
-    final double R = _linearizeColorComponent(r);
-    final double G = _linearizeColorComponent(g);
-    final double B = _linearizeColorComponent(b);
+    final double R = _linearizeColorComponent(red / 0xFF);
+    final double G = _linearizeColorComponent(green / 0xFF);
+    final double B = _linearizeColorComponent(blue / 0xFF);
     return 0.2126 * R + 0.7152 * G + 0.0722 * B;
   }
 
@@ -340,26 +339,28 @@
   ///
   /// Values for `t` are usually obtained from an [Animation<double>], such as
   /// an [AnimationController].
-  static Color? lerp(Color? x, Color? y, double t) {
-    assert(x?.colorSpace != ColorSpace.extendedSRGB);
-    assert(y?.colorSpace != ColorSpace.extendedSRGB);
-    if (y == null) {
-      if (x == null) {
+  static Color? lerp(Color? a, Color? b, double t) {
+    // TODO(gaaclarke): Update math to use floats. This was already attempted
+    //                  but it leads to subtle changes that change test results.
+    assert(a?.colorSpace != ColorSpace.extendedSRGB);
+    assert(b?.colorSpace != ColorSpace.extendedSRGB);
+    if (b == null) {
+      if (a == null) {
         return null;
       } else {
-        return _scaleAlpha(x, 1.0 - t);
+        return _scaleAlpha(a, 1.0 - t);
       }
     } else {
-      if (x == null) {
-        return _scaleAlpha(y, t);
+      if (a == null) {
+        return _scaleAlpha(b, t);
       } else {
-        assert(x.colorSpace == y.colorSpace);
-        return Color.from(
-          alpha: clampDouble(_lerpDouble(x.a, y.a, t), 0, 1),
-          red: clampDouble(_lerpDouble(x.r, y.r, t), 0, 1),
-          green: clampDouble(_lerpDouble(x.g, y.g, t), 0, 1),
-          blue: clampDouble(_lerpDouble(x.b, y.b, t), 0, 1),
-          colorSpace: x.colorSpace,
+        assert(a.colorSpace == b.colorSpace);
+        return Color._fromARGBC(
+          _clampInt(_lerpInt(a.alpha, b.alpha, t).toInt(), 0, 255),
+          _clampInt(_lerpInt(a.red, b.red, t).toInt(), 0, 255),
+          _clampInt(_lerpInt(a.green, b.green, t).toInt(), 0, 255),
+          _clampInt(_lerpInt(a.blue, b.blue, t).toInt(), 0, 255),
+          a.colorSpace,
         );
       }
     }
@@ -376,30 +377,32 @@
   static Color alphaBlend(Color foreground, Color background) {
     assert(foreground.colorSpace == background.colorSpace);
     assert(foreground.colorSpace != ColorSpace.extendedSRGB);
-    final double alpha = foreground.a;
-    if (alpha == 0) { // Foreground completely transparent.
+    // TODO(gaaclarke): Update math to use floats. This was already attempted
+    //                  but it leads to subtle changes that change test results.
+    final int alpha = foreground.alpha;
+    if (alpha == 0x00) { // Foreground completely transparent.
       return background;
     }
-    final double invAlpha = 1 - alpha;
-    double backAlpha = background.a;
-    if (backAlpha == 1) { // Opaque background case
-      return Color.from(
-        alpha: 1,
-        red: alpha * foreground.r + invAlpha * background.r,
-        green: alpha * foreground.g + invAlpha * background.g,
-        blue: alpha * foreground.b + invAlpha * background.b,
-        colorSpace: foreground.colorSpace,
+    final int invAlpha = 0xff - alpha;
+    int backAlpha = background.alpha;
+    if (backAlpha == 0xff) { // Opaque background case
+      return Color._fromARGBC(
+        0xff,
+        (alpha * foreground.red + invAlpha * background.red) ~/ 0xff,
+        (alpha * foreground.green + invAlpha * background.green) ~/ 0xff,
+        (alpha * foreground.blue + invAlpha * background.blue) ~/ 0xff,
+        foreground.colorSpace,
       );
     } else { // General case
-      backAlpha = backAlpha * invAlpha;
-      final double outAlpha = alpha + backAlpha;
-      assert(outAlpha != 0);
-      return Color.from(
-        alpha: outAlpha,
-        red: (foreground.r * alpha + background.r * backAlpha) / outAlpha,
-        green: (foreground.g * alpha + background.g * backAlpha) / outAlpha,
-        blue: (foreground.b * alpha + background.b * backAlpha) / outAlpha,
-        colorSpace: foreground.colorSpace,
+      backAlpha = (backAlpha * invAlpha) ~/ 0xff;
+      final int outAlpha = alpha + backAlpha;
+      assert(outAlpha != 0x00);
+      return Color._fromARGBC(
+        outAlpha,
+        (foreground.red * alpha + background.red * backAlpha) ~/ outAlpha,
+        (foreground.green * alpha + background.green * backAlpha) ~/ outAlpha,
+        (foreground.blue * alpha + background.blue * backAlpha) ~/ outAlpha,
+        foreground.colorSpace,
       );
     }
   }
@@ -420,19 +423,16 @@
       return false;
     }
     return other is Color &&
-        other.a == a &&
-        other.r == r &&
-        other.g == g &&
-        other.b == b &&
+        other.value == value &&
         other.colorSpace == colorSpace;
   }
 
   @override
-  int get hashCode => Object.hash(a, r, g, b, colorSpace);
+  int get hashCode => Object.hash(value, colorSpace);
 
+  // TODO(gaaclarke): Make toString() print out float values.
   @override
-  String toString() =>
-      'Color(alpha: ${a.toStringAsFixed(4)}, red: ${r.toStringAsFixed(4)}, green: ${g.toStringAsFixed(4)}, blue: ${b.toStringAsFixed(4)}, colorSpace: $colorSpace)';
+  String toString() => 'Color(0x${value.toRadixString(16).padLeft(8, '0')})';
 }
 
 /// Algorithms to use when painting on the canvas.
diff --git a/lib/web_ui/lib/lerp.dart b/lib/web_ui/lib/lerp.dart
index 80a941f..ff70c35 100644
--- a/lib/web_ui/lib/lerp.dart
+++ b/lib/web_ui/lib/lerp.dart
@@ -28,3 +28,10 @@
 double _lerpDouble(double a, double b, double t) {
   return a * (1.0 - t) + b * t;
 }
+
+/// Linearly interpolate between two integers.
+///
+/// Same as [lerpDouble] but specialized for non-null `int` type.
+double _lerpInt(int a, int b, double t) {
+  return a * (1.0 - t) + b * t;
+}
diff --git a/lib/web_ui/lib/painting.dart b/lib/web_ui/lib/painting.dart
index 7bdd746..113caba 100644
--- a/lib/web_ui/lib/painting.dart
+++ b/lib/web_ui/lib/painting.dart
@@ -17,8 +17,8 @@
   }
 }
 
-Color _scaleAlpha(Color x, double factor) {
-  return x.withValues(alpha: (x.a * factor).clamp(0, 1));
+Color _scaleAlpha(Color a, double factor) {
+  return a.withAlpha(engine.clampInt((a.alpha * factor).round(), 0, 255));
 }
 
 class Color {
@@ -141,32 +141,32 @@
 
   double computeLuminance() {
     // See <https://www.w3.org/TR/WCAG20/#relativeluminancedef>
-    final double R = _linearizeColorComponent(r);
-    final double G = _linearizeColorComponent(g);
-    final double B = _linearizeColorComponent(b);
+    final double R = _linearizeColorComponent(red / 0xFF);
+    final double G = _linearizeColorComponent(green / 0xFF);
+    final double B = _linearizeColorComponent(blue / 0xFF);
     return 0.2126 * R + 0.7152 * G + 0.0722 * B;
   }
 
-  static Color? lerp(Color? x, Color? y, double t) {
-    assert(x?.colorSpace != ColorSpace.extendedSRGB);
-    assert(y?.colorSpace != ColorSpace.extendedSRGB);
-    if (y == null) {
-      if (x == null) {
+  static Color? lerp(Color? a, Color? b, double t) {
+    assert(a?.colorSpace != ColorSpace.extendedSRGB);
+    assert(b?.colorSpace != ColorSpace.extendedSRGB);
+    if (b == null) {
+      if (a == null) {
         return null;
       } else {
-        return _scaleAlpha(x, 1.0 - t);
+        return _scaleAlpha(a, 1.0 - t);
       }
     } else {
-      if (x == null) {
-        return _scaleAlpha(y, t);
+      if (a == null) {
+        return _scaleAlpha(b, t);
       } else {
-        assert(x.colorSpace == y.colorSpace);
-        return Color.from(
-          alpha: _lerpDouble(x.a, y.a, t).clamp(0, 1),
-          red: _lerpDouble(x.r, y.r, t).clamp(0, 1),
-          green: _lerpDouble(x.g, y.g, t).clamp(0, 1),
-          blue: _lerpDouble(x.b, y.b, t).clamp(0, 1),
-          colorSpace: x.colorSpace,
+        assert(a.colorSpace == b.colorSpace);
+        return Color._fromARGBC(
+          engine.clampInt(_lerpInt(a.alpha, b.alpha, t).toInt(), 0, 255),
+          engine.clampInt(_lerpInt(a.red, b.red, t).toInt(), 0, 255),
+          engine.clampInt(_lerpInt(a.green, b.green, t).toInt(), 0, 255),
+          engine.clampInt(_lerpInt(a.blue, b.blue, t).toInt(), 0, 255),
+          a.colorSpace,
         );
       }
     }
@@ -175,30 +175,30 @@
   static Color alphaBlend(Color foreground, Color background) {
     assert(foreground.colorSpace == background.colorSpace);
     assert(foreground.colorSpace != ColorSpace.extendedSRGB);
-    final double alpha = foreground.a;
-    if (alpha == 0) { // Foreground completely transparent.
+    final int alpha = foreground.alpha;
+    if (alpha == 0x00) {
       return background;
     }
-    final double invAlpha = 1 - alpha;
-    double backAlpha = background.a;
-    if (backAlpha == 1) { // Opaque background case
-      return Color.from(
-        alpha: 1,
-        red: alpha * foreground.r + invAlpha * background.r,
-        green: alpha * foreground.g + invAlpha * background.g,
-        blue: alpha * foreground.b + invAlpha * background.b,
-        colorSpace: foreground.colorSpace,
+    final int invAlpha = 0xff - alpha;
+    int backAlpha = background.alpha;
+    if (backAlpha == 0xff) {
+      return Color._fromARGBC(
+        0xff,
+        (alpha * foreground.red + invAlpha * background.red) ~/ 0xff,
+        (alpha * foreground.green + invAlpha * background.green) ~/ 0xff,
+        (alpha * foreground.blue + invAlpha * background.blue) ~/ 0xff,
+        foreground.colorSpace,
       );
-    } else { // General case
-      backAlpha = backAlpha * invAlpha;
-      final double outAlpha = alpha + backAlpha;
-      assert(outAlpha != 0);
-      return Color.from(
-        alpha: outAlpha,
-        red: (foreground.r * alpha + background.r * backAlpha) / outAlpha,
-        green: (foreground.g * alpha + background.g * backAlpha) / outAlpha,
-        blue: (foreground.b * alpha + background.b * backAlpha) / outAlpha,
-        colorSpace: foreground.colorSpace,
+    } else {
+      backAlpha = (backAlpha * invAlpha) ~/ 0xff;
+      final int outAlpha = alpha + backAlpha;
+      assert(outAlpha != 0x00);
+      return Color._fromARGBC(
+        outAlpha,
+        (foreground.red * alpha + background.red * backAlpha) ~/ outAlpha,
+        (foreground.green * alpha + background.green * backAlpha) ~/ outAlpha,
+        (foreground.blue * alpha + background.blue * backAlpha) ~/ outAlpha,
+        foreground.colorSpace,
       );
     }
   }
@@ -216,19 +216,15 @@
       return false;
     }
     return other is Color &&
-        other.a == a &&
-        other.r == r &&
-        other.g == g &&
-        other.b == b &&
+        other.value == value &&
         other.colorSpace == colorSpace;
   }
 
   @override
-  int get hashCode => Object.hash(a, r, g, b, colorSpace);
+  int get hashCode => Object.hash(value, colorSpace);
 
   @override
-  String toString() =>
-      'Color(alpha: ${a.toStringAsFixed(4)}, red: ${r.toStringAsFixed(4)}, green: ${g.toStringAsFixed(4)}, blue: ${b.toStringAsFixed(4)}, colorSpace: $colorSpace)';
+  String toString() => 'Color(0x${value.toRadixString(16).padLeft(8, '0')})';
 }
 
 enum StrokeCap {
diff --git a/lib/web_ui/test/ui/color_test.dart b/lib/web_ui/test/ui/color_test.dart
index 6ee06e7..2ac2df7 100644
--- a/lib/web_ui/test/ui/color_test.dart
+++ b/lib/web_ui/test/ui/color_test.dart
@@ -8,33 +8,6 @@
 
 import '../common/test_initialization.dart';
 
-
-class _ColorMatcher extends Matcher {
-  _ColorMatcher(this._target, this._threshold);
-
-  final Color _target;
-  final double _threshold;
-
-  @override
-  Description describe(Description description) {
-    return description.add('matches color "$_target" with threshold "$_threshold".');
-  }
-
-  @override
-  bool matches(dynamic item, Map<dynamic, dynamic> matchState) {
-    return item is Color &&
-        item.colorSpace == _target.colorSpace &&
-        (item.a - _target.a).abs() <= _threshold &&
-        (item.r - _target.r).abs() <= _threshold &&
-        (item.g - _target.g).abs() <= _threshold &&
-        (item.b - _target.b).abs() <= _threshold;
-  }
-}
-
-Matcher isSameColorAs(Color color, {double threshold = 0.004}) {
-  return _ColorMatcher(color, threshold);
-}
-
 void main() {
   internalBootstrapBrowserTest(() => testMain);
 }
@@ -58,7 +31,7 @@
     const Color c = Color(0x00000000);
     final Paint p = Paint();
     p.color = c;
-    expect(c.toString(), equals('${const Color(0x00000000)}'));
+    expect(c.toString(), equals('Color(0x00000000)'));
   });
 
   test('color created with out of bounds value', () {
@@ -90,7 +63,7 @@
     );
     expect(
       Color.lerp(const Color(0x00000000), const Color(0xFFFFFFFF), 0.5),
-      isSameColorAs(const Color(0x7F7F7F7F)),
+      const Color(0x7F7F7F7F),
     );
     expect(
       Color.lerp(const Color(0x00000000), const Color(0xFFFFFFFF), 1.0),
@@ -129,23 +102,23 @@
     );
     expect(
       Color.alphaBlend(const Color(0x80808080), const Color(0xFFFFFFFF)),
-      isSameColorAs(const Color(0xFFBFBFBF)),
+      const Color(0xFFBFBFBF),
     );
     expect(
       Color.alphaBlend(const Color(0x80808080), const Color(0xFF000000)),
-      isSameColorAs(const Color(0xFF404040)),
+      const Color(0xFF404040),
     );
     expect(
       Color.alphaBlend(const Color(0x01020304), const Color(0xFF000000)),
-      isSameColorAs(const Color(0xFF000000)),
+      const Color(0xFF000000),
     );
     expect(
       Color.alphaBlend(const Color(0x11223344), const Color(0xFF000000)),
-      isSameColorAs(const Color(0xFF020304)),
+      const Color(0xFF020304),
     );
     expect(
       Color.alphaBlend(const Color(0x11223344), const Color(0x80000000)),
-      isSameColorAs(const Color(0x88040608)),
+      const Color(0x88040608),
     );
   });
 
diff --git a/lib/web_ui/test/ui/filters_test.dart b/lib/web_ui/test/ui/filters_test.dart
index fc7ce4a..d2ca972 100644
--- a/lib/web_ui/test/ui/filters_test.dart
+++ b/lib/web_ui/test/ui/filters_test.dart
@@ -121,22 +121,22 @@
 
   test('color filter as image filter', () async {
     const ui.ColorFilter colorFilter = ui.ColorFilter.mode(
-      ui.Color.fromARGB(128, 0, 0, 255),
+      ui.Color.fromRGBO(0, 0, 255, 128),
       ui.BlendMode.srcOver,
     );
     await drawTestImageWithPaint(ui.Paint()..imageFilter = colorFilter);
     await matchGoldenFile('ui_filter_colorfilter_as_imagefilter.png', region: region);
-    expect(colorFilter.toString(), 'ColorFilter.mode(${const ui.Color(0x800000ff)}, BlendMode.srcOver)');
+    expect(colorFilter.toString(), 'ColorFilter.mode(Color(0x800000ff), BlendMode.srcOver)');
   });
 
   test('mode color filter', () async {
     const ui.ColorFilter colorFilter = ui.ColorFilter.mode(
-      ui.Color.fromARGB(128, 0, 0, 255),
+      ui.Color.fromRGBO(0, 0, 255, 128),
       ui.BlendMode.srcOver,
     );
     await drawTestImageWithPaint(ui.Paint()..colorFilter = colorFilter);
     await matchGoldenFile('ui_filter_mode_colorfilter.png', region: region);
-    expect(colorFilter.toString(), 'ColorFilter.mode(${const ui.Color(0x800000ff)}, BlendMode.srcOver)');
+    expect(colorFilter.toString(), 'ColorFilter.mode(Color(0x800000ff), BlendMode.srcOver)');
   });
 
   test('linearToSRGBGamma color filter', () async {
diff --git a/lib/web_ui/test/ui/paint_test.dart b/lib/web_ui/test/ui/paint_test.dart
index 253ba3d..759aa63 100644
--- a/lib/web_ui/test/ui/paint_test.dart
+++ b/lib/web_ui/test/ui/paint_test.dart
@@ -69,7 +69,7 @@
     expect(
       paint.toString(),
       'Paint('
-      '${const ui.Color(0xaabbccdd)}; '
+      'Color(0xaabbccdd); '
       'BlendMode.darken; '
       'colorFilter: ColorFilter.linearToSrgbGamma(); '
       'maskFilter: MaskFilter.blur(BlurStyle.normal, 1.7); '
diff --git a/lib/web_ui/test/ui/text_style_test.dart b/lib/web_ui/test/ui/text_style_test.dart
index 98b5241..67eda1d 100644
--- a/lib/web_ui/test/ui/text_style_test.dart
+++ b/lib/web_ui/test/ui/text_style_test.dart
@@ -122,9 +122,9 @@
     expect(
       style.toString(),
       'TextStyle('
-      'color: ${const ui.Color(0xff000000)}, '
+      'color: Color(0xff000000), '
       'decoration: TextDecoration.none, '
-      'decorationColor: ${const ui.Color(0xffaa0000)}, '
+      'decorationColor: Color(0xffaa0000), '
       'decorationStyle: TextDecorationStyle.solid, '
       'decorationThickness: ${1.0}, '
       'fontWeight: FontWeight.w400, '
@@ -140,7 +140,7 @@
       'locale: en_US, '
       'background: Paint(), '
       'foreground: unspecified, '
-      'shadows: [TextShadow(${const ui.Color(0xff000000)}, Offset(0.0, 0.0), ${0.0})], '
+      'shadows: [TextShadow(Color(0xff000000), Offset(0.0, 0.0), ${0.0})], '
       "fontFeatures: [FontFeature('case', 1)], "
       "fontVariations: [FontVariation('ital', 0.1)]"
       ')',
@@ -165,7 +165,7 @@
       'TextStyle('
       'color: unspecified, '
       'decoration: TextDecoration.none, '
-      'decorationColor: ${const ui.Color(0xffaa0000)}, '
+      'decorationColor: Color(0xffaa0000), '
       'decorationStyle: TextDecorationStyle.solid, '
       'decorationThickness: ${1.0}, '
       'fontWeight: FontWeight.w400, '
@@ -181,7 +181,7 @@
       'locale: en_US, '
       'background: Paint(), '
       'foreground: Paint(), '
-      'shadows: [TextShadow(${const ui.Color(0xff000000)}, Offset(0.0, 0.0), ${0.0})], '
+      'shadows: [TextShadow(Color(0xff000000), Offset(0.0, 0.0), ${0.0})], '
       "fontFeatures: [FontFeature('case', 1)], "
       "fontVariations: [FontVariation('ital', 0.1)]"
       ')',
diff --git a/testing/dart/color_test.dart b/testing/dart/color_test.dart
index dc9888c..763339a 100644
--- a/testing/dart/color_test.dart
+++ b/testing/dart/color_test.dart
@@ -6,19 +6,6 @@
 
 import 'package:test/test.dart';
 
-/// Positive result when the Colors will map to the same argb8888 color.
-Matcher colorMatches(dynamic o) => (v) {
-  Expect.isTrue(o is Color);
-  Expect.isTrue(v is Color);
-  if (o is Color && v is Color) {
-    Expect.equals(o.colorSpace, v.colorSpace);
-    Expect.approxEquals(o.a, v.a, 1 / 255);
-    Expect.approxEquals(o.r, v.r, 1 / 255);
-    Expect.approxEquals(o.g, v.g, 1 / 255);
-    Expect.approxEquals(o.b, v.b, 1 / 255);
-  }
-};
-
 class NotAColor extends Color {
   const NotAColor(super.value);
 }
@@ -36,7 +23,7 @@
     const Color c = Color(0x00000000);
     final Paint p = Paint();
     p.color = c;
-    expect(c, equals(const Color(0x00000000)));
+    expect(c.toString(), equals('Color(0x00000000)'));
   });
 
   test('color created with out of bounds value', () {
@@ -67,7 +54,7 @@
     );
     expect(
       Color.lerp(const Color(0x00000000), const Color(0xFFFFFFFF), 0.5),
-      colorMatches(const Color(0x7F7F7F7F)),
+      const Color(0x7F7F7F7F),
     );
     expect(
       Color.lerp(const Color(0x00000000), const Color(0xFFFFFFFF), 1.0),
@@ -157,23 +144,23 @@
     );
     expect(
       Color.alphaBlend(const Color(0x80808080), const Color(0xFFFFFFFF)),
-      colorMatches(const Color(0xFFBFBFBF)),
+      const Color(0xFFBFBFBF),
     );
     expect(
       Color.alphaBlend(const Color(0x80808080), const Color(0xFF000000)),
-      colorMatches(const Color(0xFF404040)),
+      const Color(0xFF404040),
     );
     expect(
       Color.alphaBlend(const Color(0x01020304), const Color(0xFF000000)),
-      colorMatches(const Color(0xFF000000)),
+      const Color(0xFF000000),
     );
     expect(
       Color.alphaBlend(const Color(0x11223344), const Color(0xFF000000)),
-      colorMatches(const Color(0xFF020304)),
+      const Color(0xFF020304),
     );
     expect(
       Color.alphaBlend(const Color(0x11223344), const Color(0x80000000)),
-      colorMatches(const Color(0x88040608)),
+      const Color(0x88040608),
     );
   });
 
diff --git a/testing/dart/image_filter_test.dart b/testing/dart/image_filter_test.dart
index dab2416..4ad33c0 100644
--- a/testing/dart/image_filter_test.dart
+++ b/testing/dart/image_filter_test.dart
@@ -293,7 +293,7 @@
       ).toString(),
       contains(
         'matrix([10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 0.0, 1.0], FilterQuality.low) -> '
-        'ColorFilter.mode(${const Color(0xFFABCDEF)}, BlendMode.color) -> '
+        'ColorFilter.mode(Color(0xffabcdef), BlendMode.color) -> '
         'blur(20.0, 20.0, repeated) -> '
         'blur(30.0, 30.0, mirror)'
       ),
diff --git a/testing/dart/text_test.dart b/testing/dart/text_test.dart
index 46f176b..108aefb 100644
--- a/testing/dart/text_test.dart
+++ b/testing/dart/text_test.dart
@@ -80,7 +80,7 @@
     );
     expect(
       ts1.toString(),
-      equals('TextStyle(color: ${const Color(0xFF00FF00)}, decoration: unspecified, decorationColor: unspecified, decorationStyle: unspecified, decorationThickness: unspecified, fontWeight: FontWeight.w800, fontStyle: unspecified, textBaseline: unspecified, fontFamily: unspecified, fontFamilyFallback: unspecified, fontSize: 10.0, letterSpacing: unspecified, wordSpacing: unspecified, height: 100.0x, leadingDistribution: unspecified, locale: unspecified, background: unspecified, foreground: unspecified, shadows: unspecified, fontFeatures: unspecified, fontVariations: unspecified)'),
+      equals('TextStyle(color: Color(0xff00ff00), decoration: unspecified, decorationColor: unspecified, decorationStyle: unspecified, decorationThickness: unspecified, fontWeight: FontWeight.w800, fontStyle: unspecified, textBaseline: unspecified, fontFamily: unspecified, fontFamilyFallback: unspecified, fontSize: 10.0, letterSpacing: unspecified, wordSpacing: unspecified, height: 100.0x, leadingDistribution: unspecified, locale: unspecified, background: unspecified, foreground: unspecified, shadows: unspecified, fontFeatures: unspecified, fontVariations: unspecified)'),
     );
     expect(
       ts2.toString(),