diff --git a/pixelgl/canvas.go b/pixelgl/canvas.go
index 656e4d709e496518af570be01aa659482a559f30..e022a85fca3203fa396612e355319f64bf488048 100644
--- a/pixelgl/canvas.go
+++ b/pixelgl/canvas.go
@@ -219,6 +219,14 @@ func (c *Canvas) Clear(color color.Color) {
 
 	nrgba := pixel.NRGBAModel.Convert(color).(pixel.NRGBA)
 
+	// color masking
+	nrgba = nrgba.Mul(pixel.NRGBA{
+		R: float64(c.col[0]),
+		G: float64(c.col[1]),
+		B: float64(c.col[2]),
+		A: float64(c.col[3]),
+	})
+
 	mainthread.CallNonBlock(func() {
 		c.setGlhfBounds()
 		c.f.Begin()