diff --git a/CHANGELOG.md b/CHANGELOG.md
index be21202..a5415ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.17.1-dev
+
+- Fix `Color.css` constructor when there are double values in the `rgba` string.
+
 ## 0.17.0
 
 - Migrate to null safety.
diff --git a/lib/src/property.dart b/lib/src/property.dart
index a8c3c80..c3b74bc 100644
--- a/lib/src/property.dart
+++ b/lib/src/property.dart
@@ -258,10 +258,10 @@
       switch (type) {
         case _rgbCss:
           return Color.convertToHexString(
-              args[0] as int, args[1] as int, args[2] as int);
+              args[0].toInt(), args[1].toInt(), args[2].toInt());
         case _rgbaCss:
           return Color.convertToHexString(
-              args[0] as int, args[1] as int, args[2] as int, args[3]);
+              args[0].toInt(), args[1].toInt(), args[2].toInt(), args[3]);
         case _hslCss:
           return Hsla(args[0], args[1], args[2]).toHexArgbString();
         case _hslaCss:
@@ -290,15 +290,7 @@
     return '$aHex$rHex$gHex$bHex'.toLowerCase();
   }
 
-  static String _numAs2DigitHex(num v) {
-    // TODO(terry): v.toInt().toRadixString instead of v.toRadixString
-    //              Bug <http://code.google.com/p/dart/issues/detail?id=2671>.
-    var hex = v.toInt().toRadixString(16);
-    if (hex.length == 1) {
-      hex = '0${hex}';
-    }
-    return hex;
-  }
+  static String _numAs2DigitHex(int v) => v.toRadixString(16).padLeft(2, '0');
 
   static T _clamp<T extends num>(T value, T min, T max) =>
       math.max(math.min(max, value), min);
diff --git a/pubspec.yaml b/pubspec.yaml
index 2656efb..ed521e9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: csslib
-version: 0.17.0
+version: 0.17.1-dev
 
 description: A library for parsing CSS.
 repository: https://github.com/dart-lang/csslib
diff --git a/test/color_test.dart b/test/color_test.dart
new file mode 100644
index 0000000..9231848
--- /dev/null
+++ b/test/color_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:csslib/parser.dart';
+import 'package:test/test.dart';
+
+void main() {
+  group('css', () {
+    test('rgb', () {
+      final color = Color.css('rgb(0, 0, 255)');
+      expect(color, equals(Color(0x0000FF)));
+    });
+
+    test('rgba', () {
+      final color = Color.css('rgba(0, 0, 255, 1.0)');
+      expect(color, equals(Color.createRgba(0, 0, 255, 1.0)));
+    });
+  });
+}
