diff --git a/src/openttd.cpp b/src/openttd.cpp
index 9d729fd2f1..83545cb890 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -400,7 +400,6 @@ struct AfterNewGRFScan : NewGRFScanCallback {
 
 		/* initialize the ingame console */
 		IConsoleInit();
-		_cursor.in_window = true;
 		InitializeGUI();
 		IConsoleCmdExec("exec scripts/autoexec.scr 0");
 
@@ -667,6 +666,12 @@ int ttd_main(int argc, char *argv[])
 	_cur_resolution.width  = ClampU(_cur_resolution.width,  1, UINT16_MAX / 2);
 	_cur_resolution.height = ClampU(_cur_resolution.height, 1, UINT16_MAX / 2);
 
+	/* Assume the cursor starts within the game as not all video drivers
+	 * get an event that the cursor is within the window when it is opened.
+	 * Saying the cursor is there makes no visible difference as it would
+	 * just be out of the bounds of the window. */
+	_cursor.in_window = true;
+
 	/* enumerate language files */
 	InitializeLanguagePacks();