diff --git a/src/edit.c b/src/edit.c
index 447e2ee..8486e34 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1776,7 +1776,7 @@
 	else
 	    attr = 0;
 	pc_row = W_WINROW(curwin) + curwin->w_wrow;
-	pc_col = W_WINCOL(curwin);
+	pc_col = curwin->w_wincol;
 #if defined(FEAT_RIGHTLEFT) || defined(FEAT_MBYTE)
 	pc_status = PC_STATUS_UNSET;
 #endif
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index dbdd403..adf4279 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9111,7 +9111,7 @@
     {
 	n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled;
 	if (n >= 0)
-	    windgoto((int)n, W_WINCOL(curwin) + curwin->w_wcol);
+	    windgoto((int)n, curwin->w_wincol + curwin->w_wcol);
     }
 
     len = eap->line2;
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index af8fcae..b321da0 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -1954,7 +1954,7 @@
 # endif
     {
 	/* Find the cursor position in the current window */
-	*x += FILL_X(W_WINCOL(curwin) + curwin->w_wcol + 1) + 1;
+	*x += FILL_X(curwin->w_wincol + curwin->w_wcol + 1) + 1;
 	*y += FILL_Y(W_WINROW(curwin) + curwin->w_wrow + 1) + 1;
     }
 }
diff --git a/src/gui_w32.c b/src/gui_w32.c
index d9ac846..aa09488 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -6608,7 +6608,7 @@
 	}
 	else if (curwin != NULL)
 	{
-	    p.x += TEXT_X(W_WINCOL(curwin) + curwin->w_wcol + 1);
+	    p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
 	    p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
 	}
 	msg_scroll = FALSE;
diff --git a/src/if_py_both.h b/src/if_py_both.h
index aa6f06b..ea8752d 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -3877,7 +3877,7 @@
     else if (strcmp(name, "width") == 0)
 	return PyLong_FromLong((long)(W_WIDTH(self->win)));
     else if (strcmp(name, "col") == 0)
-	return PyLong_FromLong((long)(W_WINCOL(self->win)));
+	return PyLong_FromLong((long)(self->win->w_wincol));
     else if (strcmp(name, "vars") == 0)
 	return NEW_DICTIONARY(self->win->w_vars);
     else if (strcmp(name, "options") == 0)
diff --git a/src/netbeans.c b/src/netbeans.c
index 3685e15..1a86727 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -2872,7 +2872,7 @@
 
     if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
     {
-	int col = mouse_col - W_WINCOL(curwin)
+	int col = mouse_col - curwin->w_wincol
 			      - ((curwin->w_p_nu || curwin->w_p_rnu) ? 9 : 1);
 	long off = pos2off(curbuf, &curwin->w_cursor);
 
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 23e8711..0467c39 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -190,10 +190,10 @@
     /* Calculate column */
 #ifdef FEAT_RIGHTLEFT
     if (curwin->w_p_rl)
-	col = W_WINCOL(curwin) + W_WIDTH(curwin) - curwin->w_wcol - 1;
+	col = curwin->w_wincol + W_WIDTH(curwin) - curwin->w_wcol - 1;
     else
 #endif
-	col = W_WINCOL(curwin) + curwin->w_wcol;
+	col = curwin->w_wincol + curwin->w_wcol;
 
     /* if there are more items than room we need a scrollbar */
     if (pum_height < size)
@@ -312,7 +312,7 @@
 #ifdef FEAT_RIGHTLEFT
 	if (curwin->w_p_rl)
 	{
-	    if (pum_col < W_WINCOL(curwin) + W_WIDTH(curwin) - 1)
+	    if (pum_col < curwin->w_wincol + W_WIDTH(curwin) - 1)
 		screen_putchar(' ', row, pum_col + 1, attr);
 	}
 	else
diff --git a/src/screen.c b/src/screen.c
index fb92416..260471a 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2211,10 +2211,10 @@
 	    /*
 	     * Last line isn't finished: Display "@@@" in the last screen line.
 	     */
-	    screen_puts_len((char_u *)"@@", 2, scr_row, W_WINCOL(wp),
+	    screen_puts_len((char_u *)"@@", 2, scr_row, wp->w_wincol,
 							      HL_ATTR(HLF_AT));
 	    screen_fill(scr_row, scr_row + 1,
-		    (int)W_WINCOL(wp) + 2, (int)W_ENDCOL(wp),
+		    (int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
 		    '@', ' ', HL_ATTR(HLF_AT));
 	    set_empty_rows(wp, srow);
 	    wp->w_botline = lnum;
@@ -2375,7 +2375,7 @@
 	}
 # endif
 	screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
-		W_WINCOL(wp), W_ENDCOL(wp) - 1 - FDC_OFF,
+		wp->w_wincol, W_ENDCOL(wp) - 1 - FDC_OFF,
 		c2, c2, HL_ATTR(hl));
 	screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
 		W_ENDCOL(wp) - 1 - FDC_OFF, W_ENDCOL(wp) - FDC_OFF,
@@ -2392,7 +2392,7 @@
 	    if (n > wp->w_width)
 		n = wp->w_width;
 	    screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
-		    W_WINCOL(wp), (int)W_WINCOL(wp) + n,
+		    wp->w_wincol, (int)wp->w_wincol + n,
 		    cmdwin_type, ' ', HL_ATTR(HLF_AT));
 	}
 #endif
@@ -2405,7 +2405,7 @@
 	    if (nn > W_WIDTH(wp))
 		nn = W_WIDTH(wp);
 	    screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
-		    W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
+		    wp->w_wincol + n, (int)wp->w_wincol + nn,
 		    ' ', ' ', HL_ATTR(HLF_FC));
 	    n = nn;
 	}
@@ -2419,13 +2419,13 @@
 	    if (nn > W_WIDTH(wp))
 		nn = W_WIDTH(wp);
 	    screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
-		    W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
+		    wp->w_wincol + n, (int)wp->w_wincol + nn,
 		    ' ', ' ', HL_ATTR(HLF_SC));
 	    n = nn;
 	}
 #endif
 	screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
-		W_WINCOL(wp) + FDC_OFF, (int)W_ENDCOL(wp),
+		wp->w_wincol + FDC_OFF, (int)W_ENDCOL(wp),
 		c1, c2, HL_ATTR(hl));
     }
     set_empty_rows(wp, row);
@@ -2894,7 +2894,7 @@
     }
 #endif
 
-    screen_line(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
+    screen_line(row + W_WINROW(wp), wp->w_wincol, (int)W_WIDTH(wp),
 						     (int)W_WIDTH(wp), FALSE);
 
     /*
@@ -4016,7 +4016,7 @@
 #endif
 		)
 	{
-	    screen_line(screen_row, W_WINCOL(wp), col, -(int)W_WIDTH(wp),
+	    screen_line(screen_row, wp->w_wincol, col, -(int)W_WIDTH(wp),
 						    HAS_RIGHTLEFT(wp->w_p_rl));
 	    /* Pretend we have finished updating the window.  Except when
 	     * 'cursorcolumn' is set. */
@@ -5488,7 +5488,7 @@
 	    }
 #endif
 
-	    screen_line(screen_row, W_WINCOL(wp), col,
+	    screen_line(screen_row, wp->w_wincol, col,
 				  (int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
 	    row++;
 
@@ -5794,11 +5794,11 @@
 		)
 	{
 #ifdef FEAT_CONCEAL
-	    screen_line(screen_row, W_WINCOL(wp), col - boguscols,
+	    screen_line(screen_row, wp->w_wincol, col - boguscols,
 				  (int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
 	    boguscols = 0;
 #else
-	    screen_line(screen_row, W_WINCOL(wp), col,
+	    screen_line(screen_row, wp->w_wincol, col,
 				  (int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
 #endif
 	    ++row;
@@ -6931,14 +6931,14 @@
 	    }
 
 	row = W_WINROW(wp) + wp->w_height;
-	screen_puts(p, row, W_WINCOL(wp), attr);
-	screen_fill(row, row + 1, len + W_WINCOL(wp),
-			this_ru_col + W_WINCOL(wp), fillchar, fillchar, attr);
+	screen_puts(p, row, wp->w_wincol, attr);
+	screen_fill(row, row + 1, len + wp->w_wincol,
+			this_ru_col + wp->w_wincol, fillchar, fillchar, attr);
 
 	if (get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL)
 		&& (int)(this_ru_col - len) > (int)(STRLEN(NameBuff) + 1))
 	    screen_puts(NameBuff, row, (int)(this_ru_col - STRLEN(NameBuff)
-						   - 1 + W_WINCOL(wp)), attr);
+						   - 1 + wp->w_wincol), attr);
 
 #ifdef FEAT_CMDL_INFO
 	win_redr_ruler(wp, TRUE);
@@ -7167,7 +7167,7 @@
 # endif
 	}
 
-	col += W_WINCOL(wp);
+	col += wp->w_wincol;
     }
 
     if (maxwidth <= 0)
@@ -9418,7 +9418,7 @@
     {
 	validate_cursor();
 	windgoto(W_WINROW(curwin) + curwin->w_wrow,
-		W_WINCOL(curwin) + (
+		curwin->w_wincol + (
 #ifdef FEAT_RIGHTLEFT
 		/* With 'rightleft' set and the cursor on a double-wide
 		 * character, position it on the leftmost column. */
@@ -9495,7 +9495,7 @@
 	if (lastrow > Rows)
 	    lastrow = Rows;
 	screen_fill(nextrow - line_count, lastrow - line_count,
-		  W_WINCOL(wp), (int)W_ENDCOL(wp),
+		  wp->w_wincol, (int)W_ENDCOL(wp),
 		  ' ', ' ', 0);
     }
 
@@ -9606,7 +9606,7 @@
     if (row + line_count >= wp->w_height)
     {
 	screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height,
-		W_WINCOL(wp), (int)W_ENDCOL(wp),
+		wp->w_wincol, (int)W_ENDCOL(wp),
 		' ', ' ', 0);
 	return OK;
     }
@@ -10768,7 +10768,7 @@
     }
     wp->w_winbar_items[item_idx].wb_menu = NULL; /* end marker */
 
-    screen_line(wp->w_winrow, W_WINCOL(wp), (int)W_WIDTH(wp),
+    screen_line(wp->w_winrow, wp->w_wincol, (int)W_WIDTH(wp),
 						     (int)W_WIDTH(wp), FALSE);
 }
 #endif
@@ -10900,7 +10900,7 @@
 	{
 	    row = W_WINROW(wp) + wp->w_height;
 	    fillchar = fillchar_status(&attr, wp);
-	    off = W_WINCOL(wp);
+	    off = wp->w_wincol;
 	    width = W_WIDTH(wp);
 	}
 	else
diff --git a/src/structs.h b/src/structs.h
index 94d7391..768ff58 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2700,8 +2700,7 @@
     int		w_height;	    /* number of rows in window, excluding
 				       status/command/winbar line(s) */
     int		w_status_height;    /* number of status lines (0 or 1) */
-    int		w_wincol;	    /* Leftmost column of window in screen.
-				       use W_WINCOL() */
+    int		w_wincol;	    /* Leftmost column of window in screen. */
     int		w_width;	    /* Width of window, excluding separation.
 				       use W_WIDTH() */
     int		w_vsep_width;	    /* Number of separator columns (0 or 1).
diff --git a/src/term.c b/src/term.c
index 25aaa91..5714c89 100644
--- a/src/term.c
+++ b/src/term.c
@@ -3816,8 +3816,8 @@
     OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1,
 							 W_WINROW(wp) + off));
     if (*T_CSV != NUL && wp->w_width != Columns)
-	OUT_STR(tgoto((char *)T_CSV, W_WINCOL(wp) + wp->w_width - 1,
-							       W_WINCOL(wp)));
+	OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1,
+							       wp->w_wincol));
     screen_start();		    /* don't know where cursor is now */
 }
 
diff --git a/src/terminal.c b/src/terminal.c
index 9b5e4ce..18a0e61 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -730,7 +730,7 @@
     VTermModifier   mod = VTERM_MOD_NONE;
 
     vterm_mouse_move(vterm, mouse_row - W_WINROW(curwin),
-					    mouse_col - W_WINCOL(curwin), mod);
+					    mouse_col - curwin->w_wincol, mod);
     vterm_mouse_button(vterm, button, pressed, mod);
     return TRUE;
 }
@@ -1308,7 +1308,7 @@
 	case K_MOUSERIGHT:
 	    if (mouse_row < W_WINROW(curwin)
 		    || mouse_row >= (W_WINROW(curwin) + curwin->w_height)
-		    || mouse_col < W_WINCOL(curwin)
+		    || mouse_col < curwin->w_wincol
 		    || mouse_col >= W_ENDCOL(curwin)
 		    || dragging_outside)
 	    {
diff --git a/src/ui.c b/src/ui.c
index c26cb37..64553b1 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -2845,7 +2845,7 @@
 #endif
 
 	row -= W_WINROW(curwin);
-	col -= W_WINCOL(curwin);
+	col -= curwin->w_wincol;
 
 	/*
 	 * When clicking beyond the end of the window, scroll the screen.
diff --git a/src/version.c b/src/version.c
index 044b98c..6facb34 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1135,
+/**/
     1134,
 /**/
     1133,
diff --git a/src/vim.h b/src/vim.h
index cb771ff..8153ef8 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -859,7 +859,6 @@
 #define FINDFILE_DIR	1	/* only directories */
 #define FINDFILE_BOTH	2	/* files and directories */
 
-#define W_WINCOL(wp)	(wp->w_wincol)
 #define W_WIDTH(wp)	(wp->w_width)
 #define W_ENDCOL(wp)	(wp->w_wincol + wp->w_width)
 #define W_VSEP_WIDTH(wp) (wp->w_vsep_width)
diff --git a/src/window.c b/src/window.c
index 370f749..ca56d9c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2724,7 +2724,7 @@
     if (frp2 == frp_close->fr_next)
     {
 	int row = win->w_winrow;
-	int col = W_WINCOL(win);
+	int col = win->w_wincol;
 
 	frame_comp_pos(frp2, &row, &col);
     }
