diff --git a/src/vte-private.h b/src/vte-private.h
index b75c36a..4f5a064 100644
--- a/src/vte-private.h
+++ b/src/vte-private.h
@@ -88,6 +88,7 @@ G_BEGIN_DECLS
 #define VTE_DEFAULT_CURSOR		GDK_XTERM
 #define VTE_MOUSING_CURSOR		GDK_LEFT_PTR
 #define VTE_TAB_MAX			999
+#define VTE_TAB_WIDTH_MAX               15  /* VteCellAttr's columns is 4 bits */
 #define VTE_ADJUSTMENT_PRIORITY		G_PRIORITY_DEFAULT_IDLE
 #define VTE_INPUT_RETRY_PRIORITY	G_PRIORITY_HIGH
 #define VTE_INPUT_PRIORITY		G_PRIORITY_DEFAULT_IDLE
diff --git a/src/vte.c b/src/vte.c
index 642a6b4..044c913 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -6757,14 +6757,14 @@ vte_terminal_extend_selection(VteTerminal *terminal, long x, long y,
 			/* The left band */
 			_vte_invalidate_region (terminal,
 						MIN(sc->col, so->col),
-						MAX(sc->col, so->col) - 1,
+						MAX(sc->col, so->col) - 1 + (VTE_TAB_WIDTH_MAX - 1),
 						MIN(sc->row, so->row),
 						MAX(ec->row, eo->row),
 						TRUE);
 			/* The right band */
 			_vte_invalidate_region (terminal,
 						MIN(ec->col, eo->col) + 1,
-						MAX(ec->col, eo->col),
+						MAX(ec->col, eo->col) + (VTE_TAB_WIDTH_MAX - 1),
 						MIN(sc->row, so->row),
 						MAX(ec->row, eo->row),
 						TRUE);
