diff --git a/src/misc1.c b/src/misc1.c
index c2d2d19..f8b726a 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -411,24 +411,29 @@
     }
     mch_memmove(s, p, (size_t)line_len);
 
-    /* Replace the line (unless undo fails). */
+    // Replace the line (unless undo fails).
     if (!(flags & SIN_UNDO) || u_savesub(curwin->w_cursor.lnum) == OK)
     {
 	ml_replace(curwin->w_cursor.lnum, newline, FALSE);
 	if (flags & SIN_CHANGED)
 	    changed_bytes(curwin->w_cursor.lnum, 0);
-	/* Correct saved cursor position if it is in this line. */
+
+	// Correct saved cursor position if it is in this line.
 	if (saved_cursor.lnum == curwin->w_cursor.lnum)
 	{
 	    if (saved_cursor.col >= (colnr_T)(p - oldline))
-		/* cursor was after the indent, adjust for the number of
-		 * bytes added/removed */
+		// cursor was after the indent, adjust for the number of
+		// bytes added/removed
 		saved_cursor.col += ind_len - (colnr_T)(p - oldline);
 	    else if (saved_cursor.col >= (colnr_T)(s - newline))
-		/* cursor was in the indent, and is now after it, put it back
-		 * at the start of the indent (replacing spaces with TAB) */
+		// cursor was in the indent, and is now after it, put it back
+		// at the start of the indent (replacing spaces with TAB)
 		saved_cursor.col = (colnr_T)(s - newline);
 	}
+#ifdef FEAT_TEXT_PROP
+	adjust_prop_columns(curwin->w_cursor.lnum, (colnr_T)(p - oldline),
+					     ind_len - (colnr_T)(p - oldline));
+#endif
 	retval = TRUE;
     }
     else
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 6f75521..311f30f 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -342,6 +342,40 @@
   bwipe!
 endfunc
 
+func Test_prop_change_indent()
+  call prop_type_add('comment', {'highlight': 'Directory'})
+  new
+  call setline(1, ['    xxx', 'yyyyy'])
+  call prop_add(2, 2, {'length': 2, 'type': 'comment'})
+  let expect = {'col': 2, 'length': 2, 'type': 'comment', 'start': 1, 'end': 1, 'id': 0}
+  call assert_equal([expect], prop_list(2))
+
+  set shiftwidth=3
+  normal 2G>>
+  call assert_equal('   yyyyy', getline(2))
+  let expect.col += 3
+  call assert_equal([expect], prop_list(2))
+
+  normal 2G==
+  call assert_equal('    yyyyy', getline(2))
+  let expect.col = 6
+  call assert_equal([expect], prop_list(2))
+
+  call prop_clear(2)
+  call prop_add(2, 2, {'length': 5, 'type': 'comment'})
+  let expect.col = 2
+  let expect.length = 5
+  call assert_equal([expect], prop_list(2))
+
+  normal 2G<<
+  call assert_equal(' yyyyy', getline(2))
+  let expect.length = 2
+  call assert_equal([expect], prop_list(2))
+
+  set shiftwidth&
+  call prop_type_delete('comment')
+endfunc
+
 " Setup a three line prop in lines 2 - 4.
 " Add short props in line 1 and 5.
 func Setup_three_line_prop()
diff --git a/src/version.c b/src/version.c
index 768c384..e9a5a43 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    707,
+/**/
     706,
 /**/
     705,
