diff --git a/src/vte.c b/src/vte.c
index cb0d59c..e3d8cee 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -6461,38 +6461,35 @@ 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;
-			}
-		}
 	} else {
-		/* Snap to the leftmost column. */
-		sc->col = 0;
+		i = 0;
+	}
+	if (sc->col > i) {
+		if (terminal->pvt->selection_type == selection_type_char) {
+			/* If the start point is neither over the used cells, nor over the first
+			 * unused one, then move it to the next line. This way you can still start
+			 * selecting at the newline character by clicking over the first unused cell.
+			 * See bug 725909. */
+			sc->col = -1;
+			sc->row++;
+		} else if (terminal->pvt->selection_type == selection_type_word) {
+			sc->col = i;
+		}
 	}
-	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;
 		}
