diff --git a/imdraw/imdraw.go b/imdraw/imdraw.go
index 7f72a4d5b2d993095b42cff68dc95eac4e19658c..e616c39c4f57fd2bf0dd0f539ab2b0bd0c5bca2d 100644
--- a/imdraw/imdraw.go
+++ b/imdraw/imdraw.go
@@ -128,7 +128,9 @@ func (imd *IMDraw) Draw(t pixel.Target) {
 // Push adds some points to the IM queue. All Pushed points will have the same properties except for
 // the position.
 func (imd *IMDraw) Push(pts ...pixel.Vec) {
-	imd.Color = pixel.ToRGBA(imd.Color)
+	if _, ok := imd.Color.(pixel.RGBA); !ok {
+		imd.Color = pixel.ToRGBA(imd.Color)
+	}
 	opts := point{
 		col:       imd.Color.(pixel.RGBA),
 		pic:       imd.Picture,