diff --git a/pixelgl/canvas.go b/pixelgl/canvas.go
index 3d926d7f224897b9c55b6273d6443198974b6afd..4d45592759192f5ddf313f3a9fb86af136725fac 100644
--- a/pixelgl/canvas.go
+++ b/pixelgl/canvas.go
@@ -209,7 +209,11 @@ func (ct *canvasTriangles) draw(cp *canvasPicture) {
 	col := ct.c.col
 
 	mainthread.CallNonBlock(func() {
-		glhf.Bounds(0, 0, ct.c.f.Width(), ct.c.f.Height())
+		bounds := ct.c.bounds
+		bounds.Pos -= ct.c.borders.Pos
+		bx, by, bw, bh := discreteBounds(bounds)
+		glhf.Bounds(bx, by, bw, bh)
+
 		ct.c.f.Begin()
 		ct.c.s.Begin()