diff --git a/ChangeLog b/ChangeLog
index 110453d70bb129631a8715c1eb478f314f0f8177..21d34e5b33f443eb63f26de975ef0b57043c1612 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-18  Benno Schulenberg  <bensberg@justemail.net>
+	* src/nano (precalc_multicolorinfo): Do not match the ^ anchor when
+	looking further on in a line.  This prevents an end="^$" from being
+	sometimes mistakenly matched.  Fix inspired by Savannah bug #27708.
+
 2014-05-17  Benno Schulenberg  <bensberg@justemail.net>
 	* doc/syntax/json.nanorc: New file, originally from Aapo Rantalainen,
 	but edited, extended, and improved.  See Savannah patch #7410.
diff --git a/src/nano.c b/src/nano.c
index bf2d17bf7027b20161c7999056618cf8b6b95ffb..b9fa53ef03e8d0b747462371583cd352995686bd 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1884,7 +1884,8 @@ void precalc_multicolorinfo(void)
 			goto precalc_cleanup;
 		}
 
-		while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch, 0)) == 0) {
+		while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch,
+					  (startx == 0) ? 0 : REG_NOTBOL)) == 0) {
 		    /* Look for an end, and start marking how many lines are
 		     * encompassed, which should speed up rendering later. */
 		    startx += startmatch.rm_eo;
@@ -1893,7 +1894,8 @@ void precalc_multicolorinfo(void)
 #endif
 
 		    /* Look first on this line for an end. */
-		    if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch, 0) == 0) {
+		    if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch,
+				(startx == 0) ? 0 : REG_NOTBOL) == 0) {
 			startx += endmatch.rm_eo;
 			fileptr->multidata[tmpcolor->id] |= CSTARTENDHERE;
 #ifdef DEBUG