diff --git a/src/vte.c b/src/vte.c
index 06dd3aa..cfd4d90 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -6461,38 +6461,28 @@ vte_terminal_extend_selection_expand (VteTerminal *terminal)
 
 	/* Handle end-of-line at the start-cell. */
 	rowdata = _vte_terminal_find_row_data(terminal, sc->row);
 	if (rowdata != NULL) {
 		/* Find the last non-empty character on the first line. */
 		for (i = _vte_row_data_length (rowdata); i > 0; i--) {
 			cell = _vte_row_data_get (rowdata, i - 1);
 			if (cell->attr.fragment || cell->c != 0)
 				break;
 		}
-		/* If the start point is to its right, then move the
-		 * startpoint up to the beginning of the next line
-		 * unless that would move the startpoint after the end
-		 * point, or we're in select-by-line mode. */
-		if ((sc->col >= i) &&
-				(terminal->pvt->selection_type != selection_type_line)) {
-			if (sc->row < ec->row) {
-				sc->col = 0;
-				sc->row++;
-			} else {
-				sc->col = i;
-			}
+		/* If the start point is to its right, snap it back to that char. */
+		if (sc->col >= i) {
+			sc->col = i;
 		}
 	} else {
 		/* Snap to the leftmost column. */
 		sc->col = 0;
 	}
-	sc->col = find_start_column (terminal, sc->col, sc->row);
 
 	/* Handle end-of-line at the end-cell. */
 	rowdata = _vte_terminal_find_row_data(terminal, ec->row);
 	if (rowdata != NULL) {
 		/* Find the last non-empty character on the last line. */
 		for (i = _vte_row_data_length (rowdata); i > 0; i--) {
 			cell = _vte_row_data_get (rowdata, i - 1);
 			if (cell->attr.fragment || cell->c != 0)
 				break;
 		}
