diff --git a/runtime/doc/gui_w16.txt b/runtime/doc/gui_w16.txt
deleted file mode 100644
index fa84b05..0000000
--- a/runtime/doc/gui_w16.txt
+++ /dev/null
@@ -1,186 +0,0 @@
-*gui_w16.txt*   For Vim version 7.4.  Last change: 2005 Mar 29
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Vim's Graphical User Interface				*gui-w16* *win16-gui*
-
-1. Starting the GUI		|win16-start|
-2. Vim as default editor	|win16-default-editor|
-3. Using the clipboard		|win16-clipboard|
-4. Shell Commands		|win16-shell|
-5. Special colors		|win16-colors|
-6. Windows dialogs & browsers	|win16-dialogs|
-7. Various			|win16-various|
-
-Other relevant documentation:
-|gui.txt|	For generic items of the GUI.
-|os_msdos.txt|	For items common to DOS and Windows.
-|gui_w32.txt|	Some items here are also applicable to the Win16 version.
-
-{Vi does not have a Windows GUI}
-
-The Win16 version of Vim will run on Windows 3.1 or later.  It has not been
-tested on 3.0, it probably won't work without being recompiled and
-modified.  (But you really should upgrade to 3.11 anyway. :)
-
-In most respects it behaves identically to the Win32 GUI version, including
-having a flat-style toolbar(!).  The chief differences:
-
-1) Bold/Italic text is not available, to speed up repaint/reduce resource
-   usage.  (You can re-instate this by undefining MSWIN16_FASTTEXT.)
-2) No tearoff menu emulation.
-3) No OLE interface.
-4) No long filename support (of course).
-5) No tooltips on toolbar buttons - instead they produce command-line tips
-   like menu items do.
-6) Line length limited to 32767 characters (like 16-bit DOS version).
-
-
-==============================================================================
-1. Starting the GUI					*win16-start*
-
-The Win16 GUI version of Vim will always start the GUI, no matter how you
-start it or what it's called.  There is no 'console' version as such, but you
-can use one of the DOS versions in a DOS box.
-
-The Win16 GUI has an extra menu item:  "Window/Select Font".  It brings up the
-standard Windows font selector.  Note that bold and italic fonts are not
-supported in an attempt to maximize GDI drawing speed.
-
-Setting the menu height doesn't work for the Win16 GUI.
-
-							*win16-maximized*
-If you want Vim to start with a maximized window, add this command to your
-vimrc or gvimrc file: >
-	au GUIEnter * simalt ~x
-<
-
-There is a specific version of gvim.exe that runs under the Win32s subsystem
-of Windows 3.1 or 3.11.  See |win32s|.
-
-==============================================================================
-2. Vim as default editor				*win16-default-editor*
-
-To set Vim as the default editor for a file type you can use File Manager's
-"Associate" feature.
-
-When you open a file in Vim by double clicking it, Vim changes to that
-file's directory.
-
-See also |notepad|.
-
-==============================================================================
-3. Using the clipboard					*win16-clipboard*
-
-Windows has a clipboard, where you can copy text to, and paste text from.  Vim
-supports this in several ways.
-The clipboard works in the same way as the Win32 version: see |gui-clipboard|.
-
-==============================================================================
-4. Shell Commands					*win16-shell*
-
-Vim spawns a DOS window for external commands, to make it possible to run any
-DOS command.  The window uses the _default.pif settings.
-
-							*win16-!start*
-Normally, Vim waits for a command to complete before continuing (this makes
-sense for most shell commands which produce output for Vim to use).  If you
-want Vim to start a program and return immediately, you can use the following
-syntax:
-	:!start {command}
-This may only work for a Windows program though.
-Don't forget that you must tell Windows 3.1x to keep executing a DOS command
-in the background while you switch back to Vim.
-
-==============================================================================
-5. Special colors					*win16-colors*
-
-On Win16, the normal DOS colors can be used.  See |dos-colors|.
-
-Additionally the system configured colors can also be used.  These are known
-by the names Sys_XXX, where XXX is the appropriate system color name, from the
-following list (see the Win32 documentation for full descriptions).  Case is
-ignored.
-
-Sys_BTNFace		Sys_BTNShadow			Sys_ActiveBorder
-Sys_ActiveCaption	Sys_AppWorkspace		Sys_Background
-Sys_BTNText		Sys_CaptionText			Sys_GrayText
-Sys_Highlight		Sys_HighlightText		Sys_InactiveBorder
-Sys_InactiveCaption	Sys_InactiveCaptionText		Sys_Menu
-Sys_MenuText		Sys_ScrollBar			Sys_Window
-Sys_WindowFrame		Sys_WindowText
-
-Probably the most useful values are
-	Sys_Window	    Normal window background
-	Sys_WindowText      Normal window text
-	Sys_Highlight       Highlighted background
-	Sys_HighlightText   Highlighted text
-
-These extra colors are also available:
-Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
-
-
-See also |rgb.txt|.
-
-==============================================================================
-						*win16-dialogs*
-6. Windows dialogs & browsers
-
-The Win16 GUI can use familiar Windows components for some operations, as well
-as the traditional interface shared with the console version.
-
-
-6.1 Dialogs
-
-The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
-|:confirm| command and |confirm()| function) are GUI-based rather than the
-console-based ones used by other versions.  There is no option to change this.
-
-
-6.2 File Browsers
-
-When prepending ":browse" before file editing commands, a file requester is
-used to allow you to select an existing file.  See |:browse|.
-
-
-==============================================================================
-7. Various						*win16-various*
-
-							*win16-printing*
-The "File/Print" menu uses Notepad to print the current buffer.  This is a bit
-clumsy, but it's portable.  If you want something else, you can define your
-own print command.  For example, you could look for the 16-bit version of
-PrintFile.  See $VIMRUNTIME/menu.vim for how it works by default.
-
-Using this should also work: >
-	:w >>prn
-
-Vim supports a number of standard MS Windows features.  Some of these are
-detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
-Also see |:simalt|
-
-							*win16-drag-n-drop*
-You can drag and drop one or more files into the vim window, where they will
-be opened as normal.  If you hold down Shift while doing this, Vim changes to
-the (first) dropped file's directory.  If you hold Ctrl, Vim will always split
-a new window for the file.  Otherwise it's only done if the current buffer has
-been changed.
-You can also drop a directory's icon, but rather than open all files in the
-directory (which wouldn't usually be what you want) Vim instead changes to
-that directory and begins a new file.
-If Vim happens to be editing a command line, the names of the dropped files
-and directories will be inserted at the cursor.  This allows you to use these
-names with any Ex command.
-
-							*win16-truetype*
-It is recommended that you use a raster font and not a TrueType
-fixed-pitch font.  E.g. use Courier, not Courier New.  This is not just
-to use less resources but because there are subtle bugs in the
-handling of fixed-pitch TrueType in Win3.1x.  In particular, when you move
-a block cursor over a pipe character '|', the cursor is drawn in the wrong
-size and bits get left behind.  This is a bug in the Win3.1x GDI, it doesn't
-happen if you run the exe under 95/NT.
-
- vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/src/eval.c b/src/eval.c
index 0c723ec..30b94e1 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -13492,9 +13492,6 @@
 #ifdef FEAT_GUI_PHOTON
 	"gui_photon",
 #endif
-#ifdef FEAT_GUI_W16
-	"gui_win16",
-#endif
 #ifdef FEAT_GUI_W32
 	"gui_win32",
 #endif
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 89f84ed..fa26824 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -93,11 +93,7 @@
     ex_func_T   cmd_func;	/* function for this command */
     long_u	cmd_argt;	/* flags declared above */
     int		cmd_addr_type;	/* flag for address type */
-}
-# if defined(FEAT_GUI_W16)
-_far
-# endif
-cmdnames[] =
+} cmdnames[] =
 #else
 # define EX(a, b, c, d, e)  a
 enum CMD_index
diff --git a/src/feature.h b/src/feature.h
index d7679e0..ab0ec5a 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -554,7 +554,7 @@
 /* #define NO_BUILTIN_TCAPS */
 #endif
 
-#if !defined(NO_BUILTIN_TCAPS) && !defined(FEAT_GUI_W16)
+#if !defined(NO_BUILTIN_TCAPS)
 # ifdef FEAT_BIG
 #  define ALL_BUILTIN_TCAPS
 # else
@@ -1179,7 +1179,7 @@
 # if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32))
 #  define MCH_CURSOR_SHAPE
 # endif
-# if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16) || defined(FEAT_GUI_MOTIF) \
+# if defined(FEAT_GUI_W32) || defined(FEAT_GUI_MOTIF) \
 	|| defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) \
 	|| defined(FEAT_GUI_PHOTON)
 #  define FEAT_MOUSESHAPE
diff --git a/src/gui.h b/src/gui.h
index b2fdc6d..d026664 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -148,13 +148,8 @@
 #define TEAR_LEN		(9)	/* length of above string */
 
 /* for the toolbar */
-#ifdef FEAT_GUI_W16
-# define TOOLBAR_BUTTON_HEIGHT	15
-# define TOOLBAR_BUTTON_WIDTH	16
-#else
-# define TOOLBAR_BUTTON_HEIGHT	18
-# define TOOLBAR_BUTTON_WIDTH	18
-#endif
+#define TOOLBAR_BUTTON_HEIGHT	18
+#define TOOLBAR_BUTTON_WIDTH	18
 #define TOOLBAR_BORDER_HEIGHT	12  /* room above+below buttons for MSWindows */
 
 #ifdef FEAT_GUI_MSWIN
diff --git a/src/menu.c b/src/menu.c
index 4211f91..b6f8ce4 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -102,7 +102,7 @@
     int		i;
 #if defined(FEAT_GUI) && !defined(FEAT_GUI_GTK)
     int		old_menu_height;
-# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32) && !defined(FEAT_GUI_W16)
+# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
     int		old_toolbar_height;
 # endif
 #endif
@@ -274,7 +274,7 @@
     }
 #if defined(FEAT_GUI) && !(defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON))
     old_menu_height = gui.menu_height;
-# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32) && !defined(FEAT_GUI_W16)
+# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
     old_toolbar_height = gui.toolbar_height;
 # endif
 #endif
@@ -395,7 +395,7 @@
     /* If the menubar height changed, resize the window */
     if (gui.in_use
 	    && (gui.menu_height != old_menu_height
-# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32) && !defined(FEAT_GUI_W16)
+# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
 		|| gui.toolbar_height != old_toolbar_height
 # endif
 	    ))
diff --git a/src/misc1.c b/src/misc1.c
index 6f96f2f..cb45a72 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -9734,7 +9734,7 @@
 static int expand_backtick(garray_T *gap, char_u *pat, int flags);
 # endif
 
-# if defined(MSDOS) || defined(FEAT_GUI_W16) || defined(WIN3264)
+# if defined(MSDOS) || defined(WIN3264)
 /*
  * File name expansion code for MS-DOS, Win16 and Win32.  It's here because
  * it's shared between these systems.
@@ -10078,7 +10078,7 @@
 {
     return dos_expandpath(gap, path, 0, flags, FALSE);
 }
-# endif /* MSDOS || FEAT_GUI_W16 || WIN3264 */
+# endif /* MSDOS || WIN3264 */
 
 #if (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) \
 	|| defined(PROTO)
diff --git a/src/option.c b/src/option.c
index 6645cb2..8daba63 100644
--- a/src/option.c
+++ b/src/option.c
@@ -488,11 +488,7 @@
  * The options with a NULL variable are 'hidden': a set command for them is
  * ignored and they are not printed.
  */
-static struct vimoption
-#ifdef FEAT_GUI_W16
-	_far
-#endif
-	options[] =
+static struct vimoption options[] =
 {
     {"aleph",	    "al",   P_NUM|P_VI_DEF|P_CURSWANT,
 #ifdef FEAT_RIGHTLEFT
diff --git a/src/proto.h b/src/proto.h
index a7b7838..843d422 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -211,9 +211,6 @@
 extern char_u *vimpty_getenv(const char_u *string);	/* from pty.c */
 #   endif
 #  endif
-#  ifdef FEAT_GUI_W16
-#   include "gui_w16.pro"
-#  endif
 #  ifdef FEAT_GUI_W32
 #   include "gui_w32.pro"
 #  endif
diff --git a/src/structs.h b/src/structs.h
index 814b3f7..cba28fc 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2720,10 +2720,6 @@
 #ifdef FEAT_BEVAL_TIP
     BalloonEval *tip;		    /* tooltip for this menu item */
 #endif
-#ifdef FEAT_GUI_W16
-    UINT	id;		    /* Id of menu item */
-    HMENU	submenu_id;	    /* If this is submenu, add children here */
-#endif
 #ifdef FEAT_GUI_W32
     UINT	id;		    /* Id of menu item */
     HMENU	submenu_id;	    /* If this is submenu, add children here */
diff --git a/src/term.c b/src/term.c
index 6a6ab78..b38a436 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2479,11 +2479,7 @@
 #ifdef DOS16
 # define OUT_SIZE	255		/* only have 640K total... */
 #else
-# ifdef FEAT_GUI_W16
-#  define OUT_SIZE	1023		/* Save precious 1K near data */
-# else
-#  define OUT_SIZE	2047
-# endif
+# define OUT_SIZE	2047
 #endif
 	    /* Add one to allow mch_write() in os_win32.c to append a NUL */
 static char_u		out_buf[OUT_SIZE + 1];
diff --git a/src/version.c b/src/version.c
index 19680dd..84d0f94 100644
--- a/src/version.c
+++ b/src/version.c
@@ -748,6 +748,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1375,
+/**/
     1374,
 /**/
     1373,
diff --git a/src/vim.h b/src/vim.h
index 97155d2..7a7a758 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -126,7 +126,6 @@
     || defined(FEAT_GUI_ATHENA) \
     || defined(FEAT_GUI_MAC) \
     || defined(FEAT_GUI_W32) \
-    || defined(FEAT_GUI_W16) \
     || defined(FEAT_GUI_PHOTON)
 # define FEAT_GUI_ENABLED  /* also defined with NO_X11_INCLUDES */
 # if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES)
@@ -147,7 +146,7 @@
 # define _CRT_NONSTDC_NO_DEPRECATE
 #endif
 
-#if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16)
+#if defined(FEAT_GUI_W32)
 # define FEAT_GUI_MSWIN
 #endif
 #if defined(WIN32) || defined(_WIN64)
@@ -868,11 +867,7 @@
 
 #ifdef FEAT_SYN_HL
 # define SST_MIN_ENTRIES 150	/* minimal size for state stack array */
-# ifdef FEAT_GUI_W16
-#  define SST_MAX_ENTRIES 500	/* (only up to 64K blocks) */
-# else
-#  define SST_MAX_ENTRIES 1000	/* maximal size for state stack array */
-# endif
+# define SST_MAX_ENTRIES 1000	/* maximal size for state stack array */
 # define SST_FIX_STATES	 7	/* size of sst_stack[]. */
 # define SST_DIST	 16	/* normal distance between entries */
 # define SST_INVALID	(synstate_T *)-1	/* invalid syn_state pointer */
