diff --git a/src/winio.c b/src/winio.c
index 9bc45a0f2ac7f1632317a412e0469db66aa900ec..50076d14acd5e662f644a7f7e2e0f223c48254ff 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2268,6 +2268,8 @@ void reset_cursor(void)
     if (ISSET(SOFTWRAP)) {
 	filestruct *line = openfile->edittop;
 
+	row -= (openfile->firstcolumn / editwincols);
+
 	/* Calculate how many rows the lines from edittop to current use. */
 	while (line != NULL && line != openfile->current) {
 	    row += strlenpt(line->data) / editwincols + 1;