diff --git a/window.go b/window.go
index 1428568db0798ea3a7ea02dda6607a5e7a0ae45b..a2bf8bb2dcbdc42205143c310ca9c1dae94b5fce 100644
--- a/window.go
+++ b/window.go
@@ -401,7 +401,7 @@ func (wt *windowTriangles) flush() {
 			wt.attrData[i] = make(map[pixelgl.Attr]interface{})
 		}
 		p := v.Position
-		c := NRGBAModel.Convert(v.Color).(NRGBA)
+		c := v.Color
 		t := v.Texture
 		wt.attrData[i][positionVec2] = mgl32.Vec2{float32(p.X()), float32(p.Y())}
 		wt.attrData[i][colorVec4] = mgl32.Vec4{float32(c.R), float32(c.G), float32(c.B), float32(c.A)}
@@ -448,9 +448,6 @@ func (wt *windowTriangles) Update(t Triangles) {
 		}
 		wt.data = append(wt.data, newData...)
 	}
-	if t.Len() < wt.Len() {
-		wt.data = wt.data[:t.Len()]
-	}
 
 	wt.data.Update(t)
 }
@@ -497,6 +494,9 @@ func (w *Window) SetTransform(t ...Transform) {
 
 // SetMaskColor sets a global mask color for the Window.
 func (w *Window) SetMaskColor(c color.Color) {
+	if c == nil {
+		c = NRGBA{1, 1, 1, 1}
+	}
 	nrgba := NRGBAModel.Convert(c).(NRGBA)
 	r := float32(nrgba.R)
 	g := float32(nrgba.G)