diff --git a/src/misc1.c b/src/misc1.c
index 5dcf268..f83e807 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -434,8 +434,15 @@
 		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));
+	{
+	    int added = ind_len - (colnr_T)(p - oldline);
+
+	    // When increasing indent this behaves like spaces were inserted at
+	    // the old indent, when decreasing indent it behaves like spaces
+	    // were deleted at the new indent.
+	    adjust_prop_columns(curwin->w_cursor.lnum,
+			(colnr_T)(added > 0 ? (p - oldline) : ind_len), added);
+	}
 #endif
 	retval = TRUE;
     }
diff --git a/src/ops.c b/src/ops.c
index 489c473..480516b 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1916,10 +1916,9 @@
 		curwin->w_cursor.coladd = 0;
 	    }
 
-	    /* n == number of chars deleted
-	     * If we delete a TAB, it may be replaced by several characters.
-	     * Thus the number of characters may increase!
-	     */
+	    // "n" == number of chars deleted
+	    // If we delete a TAB, it may be replaced by several characters.
+	    // Thus the number of characters may increase!
 	    n = bd.textlen - bd.startspaces - bd.endspaces;
 	    oldp = ml_get(lnum);
 	    newp = alloc_check((unsigned)STRLEN(oldp) + 1 - n);
@@ -1935,6 +1934,11 @@
 	    STRMOVE(newp + bd.textcol + bd.startspaces + bd.endspaces, oldp);
 	    /* replace the line */
 	    ml_replace(lnum, newp, FALSE);
+
+#ifdef FEAT_TEXT_PROP
+	    if (curbuf->b_has_textprop && n != 0)
+		adjust_prop_columns(lnum, bd.textcol, -n);
+#endif
 	}
 
 	check_cursor_col();
diff --git a/src/testdir/dumps/Test_textprop_vis_01.dump b/src/testdir/dumps/Test_textprop_vis_01.dump
new file mode 100644
index 0000000..f411d30
--- /dev/null
+++ b/src/testdir/dumps/Test_textprop_vis_01.dump
@@ -0,0 +1,12 @@
+|x+0&#ffffff0@4>x@1| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @61
+|x@5| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @62
+|x@4| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63
+|x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64
+|x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65
+|x@3| |3+0&#ffff4012| +0&#ffffff0|x@1| @65
+|x@2| |1+0&#ffff4012| +0&#ffffff0|x@2| @65
+|x@1| |1+0&#ffff4012|2|x+0&#ffffff0@3| @65
+|x| |1+0&#ffff4012|2|3|x+0&#ffffff0@3| @65
+@1|1+0&#ffff4012|2|3| +0&#ffffff0|x@3| @65
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|,|6| @10|A|l@1| 
diff --git a/src/testdir/dumps/Test_textprop_vis_02.dump b/src/testdir/dumps/Test_textprop_vis_02.dump
new file mode 100644
index 0000000..d999ae1
--- /dev/null
+++ b/src/testdir/dumps/Test_textprop_vis_02.dump
@@ -0,0 +1,12 @@
+|x+0&#ffffff0@4> |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63
+|x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64
+|x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65
+|x@4|3+0&#ffff4012| +0&#ffffff0|x| @66
+|x@4| |x| @67
+|x@3| |x@1| @67
+|x@2| |1+0&#ffff4012|x+0&#ffffff0@1| @67
+|x@1| |1+0&#ffff4012|2|x+0&#ffffff0@1| @67
+|x| |1+0&#ffff4012|2|3|x+0&#ffffff0@1| @67
+@1|1+0&#ffff4012|2|3| +0&#ffffff0|x@1| @67
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|,|6| @10|A|l@1| 
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 635902c..d1897a2 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -613,7 +613,7 @@
 endfunc
 
 " screenshot test with textprop highlighting
-funct Test_textprop_screenshots()
+func Test_textprop_screenshot_various()
   " The Vim running in the terminal needs to use utf-8.
   if !CanRunVimInTerminal() || g:orig_encoding != 'utf-8'
     return
@@ -671,3 +671,52 @@
   call StopVimInTerminal(buf)
   call delete('XtestProp')
 endfunc
+
+func RunTestVisualBlock(width, dump)
+  call writefile([
+	\ "call setline(1, ["
+	\	.. "'xxxxxxxxx 123 x',"
+	\	.. "'xxxxxxxx 123 x',"
+	\	.. "'xxxxxxx 123 x',"
+	\	.. "'xxxxxx 123 x',"
+	\	.. "'xxxxx 123 x',"
+	\	.. "'xxxx 123 xx',"
+	\	.. "'xxx 123 xxx',"
+	\	.. "'xx 123 xxxx',"
+	\	.. "'x 123 xxxxx',"
+	\	.. "' 123 xxxxxx',"
+	\	.. "])",
+	\ "hi SearchProp ctermbg=yellow",
+	\ "call prop_type_add('search', {'highlight': 'SearchProp'})",
+	\ "call prop_add(1, 11, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(2, 10, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(3, 9, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(4, 8, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(5, 7, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(6, 6, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(7, 5, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(8, 4, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(9, 3, {'length': 3, 'type': 'search'})",
+	\ "call prop_add(10, 2, {'length': 3, 'type': 'search'})",
+	\ "normal 1G6|\<C-V>" .. repeat('l', a:width - 1) .. "10jx",
+	\], 'XtestPropVis')
+  let buf = RunVimInTerminal('-S XtestPropVis', {'rows': 12})
+  call VerifyScreenDump(buf, 'Test_textprop_vis_' .. a:dump, {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XtestPropVis')
+endfunc
+
+" screenshot test with Visual block mode operations
+func Test_textprop_screenshot_visual()
+  if !CanRunVimInTerminal()
+    return
+  endif
+
+  " Delete two columns while text props are three chars wide.
+  call RunTestVisualBlock(2, '01')
+
+  " Same, but delete four columns
+  call RunTestVisualBlock(4, '02')
+endfunc
diff --git a/src/textprop.c b/src/textprop.c
index 8c86d01..94b4d6b 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -957,7 +957,7 @@
  * shift by "bytes_added" (can be negative).
  * Note that "col" is zero-based, while tp_col is one-based.
  * Only for the current buffer.
- * Called is expected to check b_has_textprop and "bytes_added" being non-zero.
+ * Caller is expected to check b_has_textprop and "bytes_added" being non-zero.
  */
     void
 adjust_prop_columns(
@@ -994,15 +994,28 @@
 								      ? 2 : 1))
 		: (tmp_prop.tp_col > col + 1))
 	{
-	    tmp_prop.tp_col += bytes_added;
+	    if (tmp_prop.tp_col + bytes_added < col + 1)
+	    {
+		tmp_prop.tp_len += (tmp_prop.tp_col - 1 - col) + bytes_added;
+		tmp_prop.tp_col = col + 1;
+	    }
+	    else
+		tmp_prop.tp_col += bytes_added;
 	    dirty = TRUE;
+	    if (tmp_prop.tp_len <= 0)
+		continue;  // drop this text property
 	}
 	else if (tmp_prop.tp_len > 0
 		&& tmp_prop.tp_col + tmp_prop.tp_len > col
 		       + ((pt != NULL && (pt->pt_flags & PT_FLAG_INS_END_INCL))
 								      ? 0 : 1))
 	{
-	    tmp_prop.tp_len += bytes_added;
+	    int after = col - bytes_added
+				     - (tmp_prop.tp_col - 1 + tmp_prop.tp_len);
+	    if (after > 0)
+		tmp_prop.tp_len += bytes_added + after;
+	    else
+		tmp_prop.tp_len += bytes_added;
 	    dirty = TRUE;
 	    if (tmp_prop.tp_len <= 0)
 		continue;  // drop this text property
diff --git a/src/version.c b/src/version.c
index 07db364..f32cd28 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1343,
+/**/
     1342,
 /**/
     1341,
