diff --git a/example/sprite/main.go b/example/sprite/main.go
index 17db6e1..38a6043 100644
--- a/example/sprite/main.go
+++ b/example/sprite/main.go
@@ -60,6 +60,7 @@
 
 func main() {
 	app.Main(func(a app.App) {
+		var glctx gl.Context
 		visible, sz := false, size.Event{}
 		for e := range a.Events() {
 			switch e := a.Filter(e).(type) {
@@ -67,15 +68,18 @@
 				switch e.Crosses(lifecycle.StageVisible) {
 				case lifecycle.CrossOn:
 					visible = true
+					glctx, _ = e.DrawContext.(gl.Context)
+					onStart(glctx)
 				case lifecycle.CrossOff:
 					visible = false
+					onStop()
 				}
 			case size.Event:
 				sz = e
 			case paint.Event:
-				onPaint(sz)
-				a.Publish()
 				if visible {
+					onPaint(glctx, sz)
+					a.Publish()
 					// Keep animating.
 					a.Send(paint.Event{})
 				}
@@ -84,15 +88,22 @@
 	})
 }
 
-func onPaint(sz size.Event) {
-	if scene == nil {
-		images = glutil.NewImages()
-		fps = debug.NewFPS(images)
-		eng = glsprite.Engine(images)
-		loadScene()
-	}
-	gl.ClearColor(1, 1, 1, 1)
-	gl.Clear(gl.COLOR_BUFFER_BIT)
+func onStart(glctx gl.Context) {
+	images = glutil.NewImages(glctx)
+	fps = debug.NewFPS(images)
+	eng = glsprite.Engine(images)
+	loadScene()
+}
+
+func onStop() {
+	eng.Release()
+	fps.Release()
+	images.Release()
+}
+
+func onPaint(glctx gl.Context, sz size.Event) {
+	glctx.ClearColor(1, 1, 1, 1)
+	glctx.Clear(gl.COLOR_BUFFER_BIT)
 	now := clock.Time(time.Since(startTime) * 60 / time.Second)
 	eng.Render(scene, now, sz)
 	fps.Draw(sz)
