diff --git a/examples/community/scrolling-background/gamebackground.jpg b/examples/community/scrolling-background/gamebackground.jpg
index e5eab2bebd9ad67b49dd7af0fc3d651405460cd0..050632d734331db229ec7d7df3dc4e48c6c7180e 100644
Binary files a/examples/community/scrolling-background/gamebackground.jpg and b/examples/community/scrolling-background/gamebackground.jpg differ
diff --git a/examples/community/scrolling-background/main.go b/examples/community/scrolling-background/main.go
index 9b402fa233eeb8bd9c5194f662bb8cfcaf27e848..b606b2fda0875eeb6977ef963b10355d29e68e76 100644
--- a/examples/community/scrolling-background/main.go
+++ b/examples/community/scrolling-background/main.go
@@ -3,6 +3,7 @@ package main
 import (
 	"image"
 	"os"
+	"time"
 
 	_ "image/jpeg"
 
@@ -24,8 +25,10 @@ func loadPicture(path string) (pixel.Picture, error) {
 }
 
 const (
-	windowWidth  = 300
-	windowHeight = 225
+	windowWidth  = 600
+	windowHeight = 450
+	// This is the scrolling speed
+	linesPerSecond = 60
 )
 
 func run() {
@@ -55,11 +58,14 @@ func run() {
 	vector2 := pixel.V(windowWidth+(windowWidth/2), (windowHeight/2)+1)
 
 	i := float64(0)
+	last := time.Now()
 	for !win.Closed() {
+		dt := time.Since(last).Seconds()
+		last = time.Now()
 		// When one of the backgrounds has completely scrolled, we swap displacement vectors,
 		// so the backgrounds will swap positions too regarding the previous iteration,
-		// thus making the background look like infinite.
-		if i == -windowWidth {
+		// thus making the background endless.
+		if i <= -windowWidth {
 			i = 0
 			vector1, vector2 = vector2, vector1
 		}
@@ -67,7 +73,7 @@ func run() {
 		d := pixel.V(-i, 0)
 		background1.Draw(win, pixel.IM.Moved(vector1.Sub(d)))
 		background2.Draw(win, pixel.IM.Moved(vector2.Sub(d)))
-		i--
+		i -= linesPerSecond * dt
 		win.Update()
 	}
 }