diff --git a/text/atlas.go b/text/atlas.go
index cf9231c2d1bcb2ef4dd6d83637390916ab6c4d50..67000cf5d6a59ecf3e2cfe257e5159f07b46e303 100644
--- a/text/atlas.go
+++ b/text/atlas.go
@@ -9,9 +9,13 @@ import (
 
 	"github.com/faiface/pixel"
 	"golang.org/x/image/font"
+	"golang.org/x/image/font/basicfont"
 	"golang.org/x/image/math/fixed"
 )
 
+// Atlas7x13 is an Atlas using basicfont.Face7x13 with the ASCII rune set
+var Atlas7x13 *Atlas
+
 // Glyph describes one glyph in an Atlas.
 type Glyph struct {
 	Dot     pixel.Vec
@@ -171,6 +175,10 @@ func (a *Atlas) DrawRune(prevR, r rune, dot pixel.Vec) (rect, frame, bounds pixe
 	return rect, glyph.Frame, bounds, dot
 }
 
+func new7x13Atlas(runeSets ...[]rune) *Atlas {
+	return NewAtlas(basicfont.Face7x13, runeSets...)
+}
+
 type fixedGlyph struct {
 	dot     fixed.Point26_6
 	frame   fixed.Rectangle26_6
@@ -243,7 +251,3 @@ func makeMapping(face font.Face, runes []rune, padding, width fixed.Int26_6) (ma
 func i2f(i fixed.Int26_6) float64 {
 	return float64(i) / (1 << 6)
 }
-
-func f2i(f float64) fixed.Int26_6 {
-	return fixed.Int26_6(f * (1 << 6))
-}
diff --git a/text/atlas_test.go b/text/atlas_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..6d794097bf4ef8dade0276701bf7e496e18be8a2
--- /dev/null
+++ b/text/atlas_test.go
@@ -0,0 +1,20 @@
+package text
+
+import "testing"
+
+func TestAtlas7x13(t *testing.T) {
+	if Atlas7x13 == nil {
+		t.Fatalf("Atlas7x13 is nil")
+	}
+
+	for _, tt := range []struct {
+		runes []rune
+		want  bool
+	}{{ASCII, true}, {[]rune("ÅÄÖ"), false}} {
+		for _, r := range tt.runes {
+			if got := Atlas7x13.Contains(r); got != tt.want {
+				t.Fatalf("Atlas7x13.Contains('%s') = %v, want %v", string(r), got, tt.want)
+			}
+		}
+	}
+}
diff --git a/text/text.go b/text/text.go
index ea6d194d2806a422151058c435995e2455f7e7f8..fb6607098297a8f5549307789cfc618696926a5c 100644
--- a/text/text.go
+++ b/text/text.go
@@ -17,6 +17,7 @@ func init() {
 	for i := range ASCII {
 		ASCII[i] = rune(32 + i)
 	}
+	Atlas7x13 = new7x13Atlas(ASCII)
 }
 
 // RangeTable takes a *unicode.RangeTable and generates a set of runes contained within that
@@ -189,6 +190,7 @@ func (txt *Text) Clear() {
 	txt.bounds = pixel.Rect{}
 	txt.tris.SetLen(0)
 	txt.dirty = true
+	txt.Dot = txt.Orig
 }
 
 // Write writes a slice of bytes to the Text. This method never fails, always returns len(p), nil.
diff --git a/text/text_test.go b/text/text_test.go
index 095a53a170630f4adb2c82c174d676bea466f9c0..d3184a5b35d99bce3ca024f6d65f2472536c5ab7 100644
--- a/text/text_test.go
+++ b/text/text_test.go
@@ -14,6 +14,26 @@ import (
 	"github.com/golang/freetype/truetype"
 )
 
+func TestClear(t *testing.T) {
+	txt := text.New(pixel.ZV, text.Atlas7x13)
+
+	if got, want := txt.Dot, pixel.ZV; !eqVectors(got, want) {
+		t.Fatalf("txt.Dot = %v, want %v", got, want)
+	}
+
+	fmt.Fprint(txt, "Test\nClear")
+
+	if got, want := txt.Dot, pixel.V(35, -13); !eqVectors(got, want) {
+		t.Fatalf("txt.Dot = %v, want %v", got, want)
+	}
+
+	txt.Clear()
+
+	if got, want := txt.Dot, pixel.ZV; !eqVectors(got, want) {
+		t.Fatalf("txt.Dot = %v, want %v", got, want)
+	}
+}
+
 func BenchmarkNewAtlas(b *testing.B) {
 	runeSets := []struct {
 		name string
@@ -61,3 +81,7 @@ func BenchmarkTextWrite(b *testing.B) {
 		})
 	}
 }
+
+func eqVectors(a, b pixel.Vec) bool {
+	return (a.X == b.X && a.Y == b.Y)
+}