diff --git a/pixelgl/canvas.go b/pixelgl/canvas.go
index 070a382d65143f6dfeb529db06df21d028b7b1aa..93065eabaa438b80c8bdfb1ee4e82ff69491f53e 100644
--- a/pixelgl/canvas.go
+++ b/pixelgl/canvas.go
@@ -218,6 +218,11 @@ func (c *Canvas) Texture() *glhf.Texture {
 	return c.gf.Texture()
 }
 
+// Frame return the underlying OpenGL Frame of this Canvas.
+func (c *Canvas) Frame() *glhf.Frame {
+	return c.gf.frame
+}
+
 // SetPixels replaces the content of the Canvas with the provided pixels. The provided slice must be
 // an alpha-premultiplied RGBA sequence of correct length (4 * width * height).
 func (c *Canvas) SetPixels(pixels []uint8) {