diff --git a/util.go b/util.go
new file mode 100644
index 0000000000000000000000000000000000000000..90d996d07ad94f0c5632aeaaa56774b8b58c5c98
--- /dev/null
+++ b/util.go
@@ -0,0 +1,13 @@
+package pixel
+
+import "image/color"
+
+// colorToRGBA converts a color from image/color to RGBA components in interval [0, 1)
+func colorToRGBA(c color.Color) (r, g, b, a float64) {
+	ri, gi, bi, ai := c.RGBA()
+	r = float64(ri) / 0xffff
+	g = float64(gi) / 0xffff
+	b = float64(bi) / 0xffff
+	a = float64(ai) / 0xffff
+	return
+}
diff --git a/window.go b/window.go
index d2bfe18f1d691361b947019846be99e8114273af..6139bb53d07f0edf803eb5e2ec23b137a2fc99b9 100644
--- a/window.go
+++ b/window.go
@@ -1,6 +1,7 @@
 package pixel
 
 import (
+	"image/color"
 	"sync"
 
 	"github.com/faiface/pixel/pixelgl"
@@ -73,9 +74,9 @@ func NewWindow(config WindowConfig) (*Window, error) {
 }
 
 // Clear clears the window with a color.
-func (w *Window) Clear(r, g, b, a float64) {
+func (w *Window) Clear(c color.Color) {
 	w.Begin()
-	pixelgl.Clear(r, g, b, a)
+	pixelgl.Clear(colorToRGBA(c))
 	w.End()
 }