diff --git a/src/text.c b/src/text.c
index 00a892830a4afd66c3be19cfc5c746be1ecaa076..eb8220b6cb72d40282c7e26d817dbfb88d01cba0 100644
--- a/src/text.c
+++ b/src/text.c
@@ -279,13 +279,14 @@ void do_indent_marked(ssize_t len)
 		openfile->totsize -= indent_len;
 
 		/* Keep track of the change in the current line. */
-		if (f == openfile->current)
-		    openfile->current_x -= indent_len;
-
 		if (f == openfile->mark_begin &&
 			openfile->mark_begin_x >= indent_len)
 		    openfile->mark_begin_x -= indent_len;
 
+		if (f == openfile->current && openfile->current_x >=
+			indent_len)
+		    openfile->current_x -= indent_len;
+
 		/* We've unindented, so set indent_changed to TRUE. */
 		if (!indent_changed)
 		    indent_changed = TRUE;
@@ -300,12 +301,13 @@ void do_indent_marked(ssize_t len)
 	    openfile->totsize += line_indent_len;
 
 	    /* Keep track of the change in the current line. */
+	    if (f == openfile->mark_begin && openfile->current_x <
+		openfile->mark_begin_x)
+		openfile->mark_begin_x += line_indent_len;
+
 	    if (f == openfile->current)
 		openfile->current_x += line_indent_len;
 
-	    if (f == openfile->mark_begin)
-		openfile->mark_begin_x += line_indent_len;
-
 	    /* If the NO_NEWLINES flag isn't set, and this is the
 	     * magicline, add a new magicline. */
 	    if (!ISSET(NO_NEWLINES) && f == openfile->filebot)