diff --git a/src/text.c b/src/text.c
index 9c0ed3f0ce00abdf7faae51a4f485bd4685950c5..c8d1f6504dce4330a0a08393949b46de0bc3d615 100644
--- a/src/text.c
+++ b/src/text.c
@@ -280,9 +280,9 @@ void indent_a_line(filestruct *line, char *indentation)
     openfile->totsize += indent_len;
 
     /* Compensate for the change in the current line. */
-    if (line == openfile->mark)
+    if (line == openfile->mark && openfile->mark_x > 0)
         openfile->mark_x += indent_len;
-    if (line == openfile->current) {
+    if (line == openfile->current && openfile->current_x > 0) {
 	openfile->current_x += indent_len;
 	openfile->placewewant = xplustabs();
     }
@@ -578,9 +578,9 @@ bool comment_line(undo_type action, filestruct *line, const char *comment_seq)
 	openfile->totsize += pre_len + post_len;
 
 	/* If needed, adjust the position of the mark and of the cursor. */
-	if (line == openfile->mark)
+	if (line == openfile->mark && openfile->mark_x > 0)
 	    openfile->mark_x += pre_len;
-	if (line == openfile->current) {
+	if (line == openfile->current && openfile->current_x > 0) {
 	    openfile->current_x += pre_len;
 	    openfile->placewewant = xplustabs();
 	}
@@ -603,13 +603,13 @@ bool comment_line(undo_type action, filestruct *line, const char *comment_seq)
 	openfile->totsize -= pre_len + post_len;
 
 	/* If needed, adjust the position of the mark and then the cursor. */
-	if (line == openfile->mark) {
+	if (line == openfile->mark && openfile->mark_x > 0) {
 	    if (openfile->mark_x < pre_len)
 		openfile->mark_x = 0;
 	    else
 		openfile->mark_x -= pre_len;
 	}
-	if (line == openfile->current) {
+	if (line == openfile->current && openfile->current_x > 0) {
 	    if (openfile->current_x < pre_len)
 		openfile->current_x = 0;
 	    else