Escape ANSI codes.
diff --git a/utiltest.go b/utiltest.go
index 8af2677..0485395 100644
--- a/utiltest.go
+++ b/utiltest.go
@@ -245,8 +245,9 @@
 }
 
 func (f *formatterAsDiff) Format(s fmt.State, c rune) {
-	expected := pretty.Sprintf("%# v", f.expected)
-	actual := pretty.Sprintf("%# v", f.actual)
+	// Format the items and escape those pesky ANSI codes.
+	expected := strings.Replace(pretty.Sprintf("%# v", f.expected), "\033", "\\033", -1)
+	actual := strings.Replace(pretty.Sprintf("%# v", f.actual), "\033", "\\033", -1)
 	if strings.IndexByte(expected, '\n') == -1 && strings.IndexByte(actual, '\n') == -1 {
 		fmt.Fprintf(s, "Expected: %s\nActual:   %s", expected, actual)
 		return
diff --git a/utiltest_test.go b/utiltest_test.go
index 90014ac..91f6238 100644
--- a/utiltest_test.go
+++ b/utiltest_test.go
@@ -306,3 +306,10 @@
 	expected := strings.Repeat("0123456789abcedf", 2048/16) + "..."
 	AssertEqual(t, expected, fmt.Sprintf("%s", format(large)))
 }
+
+func TestDiffEscapeANSI(t *testing.T) {
+	t.Parallel()
+	actual := fmt.Sprintf("% #v", formatAsDiff("\033[31mHi", "\033[32mHi"))
+	expected := "Expected: \\033[31mHi\nActual:   \\033[32mHi"
+	AssertEqual(t, expected, actual)
+}