Index: game2/src/bridge_gui.cpp
===================================================================
--- game2/src/bridge_gui.cpp	(revision 14035)
+++ game2/src/bridge_gui.cpp	(working copy)
@@ -117,6 +117,8 @@
 		type(br_type),
 		bridges(bl)
 	{
+		InitializeSize(desc);
+
 		this->bridges->SetListing(this->last_sorting);
 		this->bridges->SetSortFuncs(this->sorter_funcs);
 		this->bridges->NeedResort();
Index: game2/src/console_gui.cpp
===================================================================
--- game2/src/console_gui.cpp	(revision 14035)
+++ game2/src/console_gui.cpp	(working copy)
@@ -64,6 +64,8 @@
 
 	IConsoleWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		_iconsole_mode = ICONSOLE_OPENED;
 		SetBit(_no_scroll, SCROLL_CON); // override cursor arrows; the gamefield will not scroll
 
Index: game2/src/toolbar_gui.cpp
===================================================================
--- game2/src/toolbar_gui.cpp	(revision 14035)
+++ game2/src/toolbar_gui.cpp	(working copy)
@@ -884,6 +884,8 @@
 struct MainToolbarWindow : Window {
 	MainToolbarWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		this->SetWidgetDisabledState(TBN_PAUSE, _networking && !_network_server); // if not server, disable pause button
 		this->SetWidgetDisabledState(TBN_FASTFORWARD, _networking); // if networking, disable fast-forward button
 
@@ -1088,6 +1090,8 @@
 public:
 	ScenarioEditorToolbarWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		CLRBITS(this->flags4, WF_WHITE_BORDER_MASK);
 
 		this->FindWindowPlacementAndResize(desc);
Index: game2/src/settings_gui.cpp
===================================================================
--- game2/src/settings_gui.cpp	(revision 14035)
+++ game2/src/settings_gui.cpp	(working copy)
@@ -147,6 +147,7 @@
 
 	GameOptionsWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
 		this->opt = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
 		this->FindWindowPlacementAndResize(desc);
 	}
@@ -426,6 +427,8 @@
 public:
 	GameDifficultyWindow() : Window(&_game_difficulty_desc)
 	{
+		InitializeSize(&_game_difficulty_desc);
+
 		/* Copy current settings (ingame or in intro) to temporary holding place
 		 * change that when setting stuff, copy back on clicking 'OK' */
 		this->opt_mod_temp = (_game_mode == GM_MENU) ? _settings_newgame : _settings_game;
@@ -753,6 +756,8 @@
 	{
 		static bool first_time = true;
 
+		InitializeSize(desc);
+
 		patches_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
 
 		/* Build up the dynamic settings-array only once per OpenTTD session */
@@ -1042,6 +1047,8 @@
 
 	CustomCurrencyWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		this->separator[0] = _custom_currency.separator;
 		this->separator[1] = '\0';
 		this->FindWindowPlacementAndResize(desc);
Index: game2/src/genworld_gui.cpp
===================================================================
--- game2/src/genworld_gui.cpp	(revision 14035)
+++ game2/src/genworld_gui.cpp	(working copy)
@@ -253,6 +253,8 @@
 
 	GenerateLandscapeWindow(const WindowDesc *desc, WindowNumber number = 0) : QueryStringBaseWindow(desc, number)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_settings_newgame.game_creation.landscape + GLAND_TEMPERATE);
 
 		snprintf(this->edit_str_buf, sizeof(this->edit_str_buf), "%u", _settings_newgame.game_creation.generation_seed);
@@ -642,6 +644,8 @@
 
 	CreateScenarioWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_settings_newgame.game_creation.landscape + CSCEN_TEMPERATE);
 		this->FindWindowPlacementAndResize(desc);
 	}
@@ -851,6 +855,7 @@
 public:
 	GenerateProgressWindow() : Window(&_generate_progress_desc)
 	{
+		InitializeSize(&_generate_progress_desc);
 		this->FindWindowPlacementAndResize(&_generate_progress_desc);
 	}
 
Index: game2/src/misc_gui.cpp
===================================================================
--- game2/src/misc_gui.cpp	(revision 14035)
+++ game2/src/misc_gui.cpp	(working copy)
@@ -103,7 +103,10 @@
 		}
 	}
 
-	LandInfoWindow(TileIndex tile) : Window(&_land_info_desc) {
+	LandInfoWindow(TileIndex tile) : Window(&_land_info_desc)
+	{
+		InitializeSize(&_land_info_desc);
+
 		Player *p = GetPlayer(IsValidPlayerID(_local_player) ? _local_player : PLAYER_FIRST);
 		Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 
@@ -303,6 +306,7 @@
 
 	AboutWindow() : Window(&_about_desc)
 	{
+		InitializeSize(&_about_desc);
 		this->counter = 5;
 		this->scroll_height = this->height - 40;
 		this->FindWindowPlacementAndResize(&_about_desc);
@@ -1058,6 +1062,7 @@
 {
 	QueryStringWindow(const WindowDesc *desc, Window *parent) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
 		this->parent = parent;
 		SetBit(_no_scroll, SCROLL_EDIT);
 
@@ -1204,6 +1209,8 @@
 
 	QueryWindow(const WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		if (parent == NULL) parent = FindWindowById(WC_MAIN_WINDOW, 0);
 		this->parent = parent;
 		this->left = parent->left + (parent->width / 2) - (this->width / 2);
@@ -1428,6 +1435,8 @@
 			STR_LOAD_HEIGHTMAP,
 		};
 
+		InitializeSize(desc);
+
 		SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0);
 		SetBit(_no_scroll, SCROLL_SAVE);
 
Index: game2/src/intro_gui.cpp
===================================================================
--- game2/src/intro_gui.cpp	(revision 14035)
+++ game2/src/intro_gui.cpp	(working copy)
@@ -76,6 +76,8 @@
 public:
 	SelectGameWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_settings_newgame.game_creation.landscape + SGI_TEMPERATE_LANDSCAPE);
 		this->FindWindowPlacementAndResize(desc);
 	}
Index: game2/src/engine_gui.cpp
===================================================================
--- game2/src/engine_gui.cpp	(revision 14035)
+++ game2/src/engine_gui.cpp	(working copy)
@@ -71,6 +71,8 @@
 struct EnginePreviewWindow : Window {
 	EnginePreviewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->FindWindowPlacementAndResize(desc);
 	}
 
Index: game2/src/smallmap_gui.cpp
===================================================================
--- game2/src/smallmap_gui.cpp	(revision 14035)
+++ game2/src/smallmap_gui.cpp	(working copy)
@@ -822,6 +822,8 @@
 
 	SmallMapWindow(const WindowDesc *desc, int window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(this->map_type + SM_WIDGET_CONTOUR);
 		this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, this->show_towns);
 
@@ -1110,6 +1112,8 @@
 public:
 	ExtraViewportWindow(const WindowDesc *desc, int window_number, TileIndex tile) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		/* New viewport start at (zero,zero) */
 		InitializeWindowViewport(this, 3, 17, this->widget[EVW_VIEWPORT].right - this->widget[EVW_VIEWPORT].left - 1, this->widget[EVW_VIEWPORT].bottom - this->widget[EVW_VIEWPORT].top - 1, 0, ZOOM_LVL_VIEWPORT);
 
Index: game2/src/industry_gui.cpp
===================================================================
--- game2/src/industry_gui.cpp	(revision 14035)
+++ game2/src/industry_gui.cpp	(working copy)
@@ -157,6 +157,8 @@
 public:
 	BuildIndustryWindow() : Window(&_build_industry_desc)
 	{
+		InitializeSize(&_build_industry_desc);
+
 		/* Shorten the window to the equivalant of the additionnal purchase
 		 * info coming from the callback.  SO it will only be available to its full
 		 * height when newindistries are loaded */
@@ -466,6 +468,8 @@
 public:
 	IndustryViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->flags4 |= WF_DISABLE_VP_SCROLL;
 		this->editbox_line = 0;
 		this->clicked_line = 0;
@@ -849,6 +853,8 @@
 public:
 	IndustryDirectoryWindow(const WindowDesc *desc, WindowNumber number) : Window(desc, number)
 	{
+		InitializeSize(desc);
+
 		this->vscroll.cap = 16;
 		this->resize.height = this->height - 6 * 10; // minimum 10 items
 		this->resize.step_height = 10;
Index: game2/src/build_vehicle_gui.cpp
===================================================================
--- game2/src/build_vehicle_gui.cpp	(revision 14035)
+++ game2/src/build_vehicle_gui.cpp	(working copy)
@@ -804,6 +804,8 @@
 
 	BuildVehicleWindow(const WindowDesc *desc, TileIndex tile, VehicleType type) : Window(desc, tile == 0 ? (int)type : tile)
 	{
+		InitializeSize(desc);
+
 		this->vehicle_type = type;
 		int vlh = GetVehicleListHeight(this->vehicle_type);
 
Index: game2/src/autoreplace_gui.cpp
===================================================================
--- game2/src/autoreplace_gui.cpp	(revision 14035)
+++ game2/src/autoreplace_gui.cpp	(working copy)
@@ -230,6 +230,8 @@
 public:
 	ReplaceVehicleWindow(const WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc, vehicletype)
 	{
+		InitializeSize(desc);
+
 		this->wagon_btnstate = true; // start with locomotives (all other vehicles will not read this bool)
 		this->update_left   = true;
 		this->update_right  = true;
Index: game2/src/music_gui.cpp
===================================================================
--- game2/src/music_gui.cpp	(revision 14035)
+++ game2/src/music_gui.cpp	(working copy)
@@ -214,6 +214,8 @@
 public:
 	MusicTrackSelectionWindow(const WindowDesc *desc, WindowNumber number) : Window(desc, number)
 	{
+		InitializeSize(desc);
+
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -384,6 +386,7 @@
 public:
 	MusicWindow(const WindowDesc *desc, WindowNumber number) : Window(desc, number)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
Index: game2/src/airport_gui.cpp
===================================================================
--- game2/src/airport_gui.cpp	(revision 14035)
+++ game2/src/airport_gui.cpp	(working copy)
@@ -70,6 +70,8 @@
 struct BuildAirToolbarWindow : Window {
 	BuildAirToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->FindWindowPlacementAndResize(desc);
 		if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
 	}
@@ -175,6 +177,8 @@
 
 	AirportPickerWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->SetWidgetLoweredState(BAW_BTN_DONTHILIGHT, !_station_show_coverage);
 		this->SetWidgetLoweredState(BAW_BTN_DOHILIGHT, _station_show_coverage);
 		this->LowerWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
Index: game2/src/newgrf_gui.cpp
===================================================================
--- game2/src/newgrf_gui.cpp	(revision 14035)
+++ game2/src/newgrf_gui.cpp	(working copy)
@@ -141,6 +141,7 @@
 
 	NewGRFAddWindow(const WindowDesc *desc, GRFConfig **list) : Window(desc, 0)
 	{
+		InitializeSize(desc);
 		this->list = list;
 		this->resize.step_height = 10;
 
@@ -319,6 +320,8 @@
 
 	NewGRFWindow(const WindowDesc *desc, bool editable, bool show_params, bool exec_changes, GRFConfig **config) : Window(desc, 0)
 	{
+		InitializeSize(desc);
+
 		this->resize.step_height = 14;
 		this->sel         = NULL;
 		this->list        = NULL;
Index: game2/src/window_gui.h
===================================================================
--- game2/src/window_gui.h	(revision 14035)
+++ game2/src/window_gui.h	(working copy)
@@ -191,6 +191,7 @@
 protected:
 	void Initialize(int x, int y, int min_width, int min_height,
 			WindowClass cls, const Widget *widget, int window_number);
+	void InitializeSize(const WindowDesc *desc);
 	void FindWindowPlacementAndResize(int def_width, int def_height);
 	void FindWindowPlacementAndResize(const WindowDesc *desc);
 
Index: game2/src/terraform_gui.cpp
===================================================================
--- game2/src/terraform_gui.cpp	(revision 14035)
+++ game2/src/terraform_gui.cpp	(working copy)
@@ -242,6 +242,7 @@
 struct TerraformToolbarWindow : Window {
 	TerraformToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -581,6 +582,8 @@
 struct ScenarioEditorLandscapeGenerationWindow : Window {
 	ScenarioEditorLandscapeGenerationWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->widget[ETTW_PLACE_DESERT_LIGHTHOUSE].tooltips = (_settings_game.game_creation.landscape == LT_TROPIC) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
 		this->FindWindowPlacementAndResize(desc);
 	}
Index: game2/src/rail_gui.cpp
===================================================================
--- game2/src/rail_gui.cpp	(revision 14035)
+++ game2/src/rail_gui.cpp	(working copy)
@@ -618,6 +618,8 @@
 struct BuildRailToolbarWindow : Window {
 	BuildRailToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->DisableWidget(RTW_REMOVE);
 
 		this->FindWindowPlacementAndResize(desc);
@@ -973,6 +975,8 @@
 public:
 	BuildRailStationWindow(const WindowDesc *desc, Window *parent, bool newstation) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_railstation.orientation + BRSW_PLATFORM_DIR_X);
 		if (_railstation.dragdrop) {
 			this->LowerWidget(BRSW_PLATFORM_DRAG_N_DROP);
@@ -1389,6 +1393,7 @@
 public:
 	BuildSignalWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	};
 
@@ -1529,6 +1534,8 @@
 public:
 	BuildRailDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_build_depot_direction + BRDW_DEPOT_NE);
 		this->FindWindowPlacementAndResize(desc);
 	}
@@ -1602,6 +1609,8 @@
 public:
 	BuildRailWaypointWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->hscroll.cap = 5;
 		this->hscroll.count = _waypoint_count;
 		this->FindWindowPlacementAndResize(desc);
Index: game2/src/group_gui.cpp
===================================================================
--- game2/src/group_gui.cpp	(revision 14035)
+++ game2/src/group_gui.cpp	(working copy)
@@ -172,6 +172,8 @@
 public:
 	VehicleGroupWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		const PlayerID owner = (PlayerID)GB(this->window_number, 0, 8);
 		this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
 
Index: game2/src/timetable_gui.cpp
===================================================================
--- game2/src/timetable_gui.cpp	(revision 14035)
+++ game2/src/timetable_gui.cpp	(working copy)
@@ -52,6 +52,8 @@
 
 	TimetableWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = GetVehicle(window_number)->owner;
 		this->vscroll.cap = 8;
 		this->resize.step_height = 10;
Index: game2/src/depot_gui.cpp
===================================================================
--- game2/src/depot_gui.cpp	(revision 14035)
+++ game2/src/depot_gui.cpp	(working copy)
@@ -246,6 +246,8 @@
 
 	DepotWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->sel = INVALID_VEHICLE;
 		this->generate_list = true;
 
Index: game2/src/station_gui.cpp
===================================================================
--- game2/src/station_gui.cpp	(revision 14035)
+++ game2/src/station_gui.cpp	(working copy)
@@ -209,6 +209,8 @@
 public:
 	PlayerStationsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = (byte)this->window_number;
 		this->vscroll.cap = 12;
 		this->resize.step_height = 10;
@@ -686,6 +688,8 @@
 
 	StationViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		PlayerID owner = GetStation(window_number)->owner;
 		if (owner != OWNER_NONE) this->caption_color = owner;
 		this->vscroll.cap = 5;
Index: game2/src/town_gui.cpp
===================================================================
--- game2/src/town_gui.cpp	(revision 14035)
+++ game2/src/town_gui.cpp	(working copy)
@@ -153,6 +153,8 @@
 	TownAuthorityWindow(const WindowDesc *desc, WindowNumber window_number) :
 			Window(desc, window_number), sel_index(-1)
 	{
+		InitializeSize(desc);
+
 		this->town = GetTown(this->window_number);
 		this->vscroll.cap = 5;
 
@@ -295,6 +297,8 @@
 public:
 	TownViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->town = GetTown(this->window_number);
 		bool ingame = _game_mode != GM_EDITOR;
 
@@ -521,6 +525,8 @@
 public:
 	TownDirectoryWindow(const WindowDesc *desc) : Window(desc, 0)
 	{
+		InitializeSize(desc);
+
 		this->vscroll.cap = 16;
 		this->resize.step_height = 10;
 		this->resize.height = this->height - 10 * 6; // minimum of 10 items in the list, each item 10 high
@@ -702,6 +708,8 @@
 public:
 	ScenarioEditorTownGenerationWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_scengen_town_size + TSEW_SMALLTOWN);
 		this->FindWindowPlacementAndResize(desc);
 	}
Index: game2/src/window.cpp
===================================================================
--- game2/src/window.cpp	(revision 14035)
+++ game2/src/window.cpp	(working copy)
@@ -1029,8 +1029,13 @@
 }
 
 /**
- * Set the positions of a new window from a WindowDesc and open it.
+ * Set initial (temporarily) position and size of a new window and open it
+ * (hook it into the window stack, etc).
  *
+ * After initialization by the base class, call Window::InitializeSize() from
+ * the constructor of the derived class for proper setting of initial position
+ * and (minimal) size.
+ *
  * @param *desc         The pointer to the WindowDesc to be created
  * @param window_number the window number of the new window
  *
@@ -1038,11 +1043,41 @@
  */
 Window::Window(const WindowDesc *desc, WindowNumber window_number)
 {
-	Point pt = LocalGetWindowPlacement(desc, window_number);
-	this->Initialize(pt.x, pt.y, desc->minimum_width, desc->minimum_height, desc->cls, desc->widgets, window_number);
+	/* Use some fixed position and size, such that it is quite detectable
+	 * that the call to Window::InitializeSize() is missing
+	 */
+	this->Initialize(1, 50, 100, 100, desc->cls, desc->widgets, window_number);
 	this->desc_flags = desc->flags;
 }
 
+/**
+ * Initialize initial size and position of a new window properly.
+ *
+ * Call this function from the constructor of the derived class after
+ * performing basic initialization with Window::Window(const WindowDesc *desc,
+ * WindowNumber window_number).
+ *
+ * @note Due to being called from the derived class, it has access to
+ *       overloaded methods from the derived class.
+ */
+void Window::InitializeSize(const WindowDesc *desc)
+{
+	Point pt = LocalGetWindowPlacement(desc, this->window_number);
+
+	if (this->viewport != NULL) {
+		this->viewport->left += pt.x - this->left;
+		this->viewport->top  += pt.y - this->top;
+	}
+	this->left = pt.x;
+	this->top = pt.y;
+	this->width = desc->minimum_width;
+	this->height = desc->minimum_height;
+	this->resize.width = desc->minimum_width;
+	this->resize.height = desc->minimum_height;
+
+	this->SetDirty();
+}
+
 /** Do a search for a window at specific coordinates. For this we start
  * at the topmost window, obviously and work our way down to the bottom
  * @param x position x to query
Index: game2/src/order_gui.cpp
===================================================================
--- game2/src/order_gui.cpp	(revision 14035)
+++ game2/src/order_gui.cpp	(working copy)
@@ -606,6 +606,8 @@
 public:
 	OrdersWindow(const WindowDesc *desc, const Vehicle *v) : Window(desc, v->index)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = v->owner;
 		this->vscroll.cap = 6;
 		this->resize.step_height = 10;
Index: game2/src/news_gui.cpp
===================================================================
--- game2/src/news_gui.cpp	(revision 14035)
+++ game2/src/news_gui.cpp	(working copy)
@@ -174,6 +174,8 @@
 
 	NewsWindow(const WindowDesc *desc, NewsItem *ni) : Window(desc), ni(ni)
 	{
+		InitializeSize(desc);
+
 		NewsWindow::duration = 555;
 		const Window *w = FindWindowById(WC_SEND_NETWORK_MSG, 0);
 		this->chat_height = (w != NULL) ? w->height : 0;
@@ -687,6 +689,8 @@
 struct MessageHistoryWindow : Window {
 	MessageHistoryWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		this->vscroll.cap = 10;
 		this->vscroll.count = _total_news;
 		this->resize.step_height = 12;
@@ -786,6 +790,8 @@
 	{
 		NewsDisplay all_val;
 
+		InitializeSize(desc);
+
 		/* Set up the initial disabled buttons in the case of 'off' or 'full' */
 		all_val = _news_type_data[0].display;
 		for (int i = 0; i < NT_END; i++) {
Index: game2/src/vehicle_gui.cpp
===================================================================
--- game2/src/vehicle_gui.cpp	(revision 14035)
+++ game2/src/vehicle_gui.cpp	(working copy)
@@ -278,6 +278,8 @@
 
 	RefitWindow(const WindowDesc *desc, const Vehicle *v, VehicleOrderID order) : Window(desc, v->index)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = v->owner;
 		this->vscroll.cap = 8;
 		this->resize.step_height = 14;
@@ -736,6 +738,8 @@
 
 	VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		uint16 window_type = this->window_number & VLW_MASK;
 		PlayerID player = (PlayerID)GB(this->window_number, 0, 8);
 
@@ -1273,6 +1277,8 @@
 	/** Initialize a newly created vehicle details window */
 	VehicleDetailsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		const Vehicle *v = GetVehicle(this->window_number);
 
 		switch (v->type) {
@@ -1668,6 +1674,8 @@
 struct VehicleViewWindow : Window {
 	VehicleViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		const Vehicle *v = GetVehicle(this->window_number);
 
 		this->caption_color = v->owner;
Index: game2/src/network/network_gui.cpp
===================================================================
--- game2/src/network/network_gui.cpp	(revision 14035)
+++ game2/src/network/network_gui.cpp	(working copy)
@@ -290,6 +290,8 @@
 public:
 	NetworkGameWindow(const WindowDesc *desc) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		ttd_strlcpy(this->edit_str_buf, _settings_client.network.player_name, lengthof(this->edit_str_buf));
 		this->afilter = CS_ALPHANUMERAL;
 		InitializeTextBuffer(&this->text, this->edit_str_buf, lengthof(this->edit_str_buf), 120);
@@ -760,6 +762,8 @@
 
 	NetworkStartServerWindow(const WindowDesc *desc) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		ttd_strlcpy(this->edit_str_buf, _settings_client.network.server_name, lengthof(this->edit_str_buf));
 
 		_saveload_mode = SLD_NEW_GAME;
@@ -1073,6 +1077,8 @@
 	NetworkLobbyWindow(const WindowDesc *desc, NetworkGameList *ngl) :
 			Window(desc), company(INVALID_PLAYER), server(ngl)
 	{
+		InitializeSize(desc);
+
 		this->vscroll.cap = 10;
 
 		this->FindWindowPlacementAndResize(desc);
@@ -1530,6 +1536,7 @@
 			selected_item(0),
 			selected_y(255)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -1660,6 +1667,7 @@
 struct NetworkJoinStatusWindow : Window {
 	NetworkJoinStatusWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
 		this->parent = FindWindowById(WC_NETWORK_WINDOW, 0);
 	}
 
@@ -1749,6 +1757,8 @@
 
 	NetworkChatWindow (const WindowDesc *desc, DestType type, int dest) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(2);
 		this->dtype   = type;
 		this->dest    = dest;
@@ -1990,6 +2000,8 @@
 struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow {
 	NetworkCompanyPasswordWindow(const WindowDesc *desc, Window *parent) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		this->parent = parent;
 		this->afilter = CS_ALPHANUMERAL;
 		InitializeTextBuffer(&this->text, this->edit_str_buf, min(lengthof(_settings_client.network.default_company_pass), lengthof(this->edit_str_buf)), 0);
Index: game2/src/transparency_gui.cpp
===================================================================
--- game2/src/transparency_gui.cpp	(revision 14035)
+++ game2/src/transparency_gui.cpp	(working copy)
@@ -38,6 +38,7 @@
 public:
 	TransparenciesWindow(const WindowDesc *desc, int window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
Index: game2/src/dock_gui.cpp
===================================================================
--- game2/src/dock_gui.cpp	(revision 14035)
+++ game2/src/dock_gui.cpp	(working copy)
@@ -163,6 +163,8 @@
 struct BuildDocksToolbarWindow : Window {
 	BuildDocksToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->FindWindowPlacementAndResize(desc);
 		if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
 	}
@@ -330,6 +332,8 @@
 public:
 	BuildDocksStationWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_station_show_coverage + BDSW_LT_OFF);
 		this->FindWindowPlacementAndResize(desc);
 	}
@@ -419,6 +423,8 @@
 public:
 	BuildDocksDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_ship_depot_direction + BDDW_X);
 		UpdateDocksDirection();
 		this->FindWindowPlacementAndResize(desc);
Index: game2/src/subsidy_gui.cpp
===================================================================
--- game2/src/subsidy_gui.cpp	(revision 14035)
+++ game2/src/subsidy_gui.cpp	(working copy)
@@ -22,6 +22,7 @@
 struct SubsidyListWindow : Window {
 	SubsidyListWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
Index: game2/src/road_gui.cpp
===================================================================
--- game2/src/road_gui.cpp	(revision 14035)
+++ game2/src/road_gui.cpp	(working copy)
@@ -404,6 +404,8 @@
 struct BuildRoadToolbarWindow : Window {
 	BuildRoadToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->SetWidgetsDisabledState(true,
 			RTW_REMOVE,
 			RTW_ONE_WAY,
@@ -732,6 +734,8 @@
 public:
 	BuildRoadDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		this->LowerWidget(_road_depot_orientation + BRDW_DEPOT_NE);
 		if ( _cur_roadtype == ROADTYPE_TRAM) {
 			this->widget[BRDW_CAPTION].data = STR_TRAM_DEPOT_ORIENTATION;
@@ -815,6 +819,8 @@
 public:
 	BuildRoadStationWindow(const WindowDesc *desc, Window *parent, RoadStopType rs) : PickerWindowBase(desc, parent)
 	{
+		InitializeSize(desc);
+
 		/* Trams don't have non-drivethrough stations */
 		if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
 			_road_station_picker_orientation = DIAGDIR_END;
Index: game2/src/tree_gui.cpp
===================================================================
--- game2/src/tree_gui.cpp	(revision 14035)
+++ game2/src/tree_gui.cpp	(working copy)
@@ -48,6 +48,8 @@
 public:
 	BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		if (_game_mode != GM_EDITOR) {
 			this->HideWidget(BTW_MANY_RANDOM);
 			int offset = this->widget[BTW_MANY_RANDOM].bottom - this->widget[BTW_MANY_RANDOM].top;
Index: game2/src/osk_gui.cpp
===================================================================
--- game2/src/osk_gui.cpp	(revision 14035)
+++ game2/src/osk_gui.cpp	(working copy)
@@ -52,6 +52,8 @@
 
 	OskWindow(const WindowDesc *desc, QueryStringBaseWindow *parent, int button, int cancel, int ok) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		this->parent = parent;
 		assert(parent != NULL);
 
Index: game2/src/signs_gui.cpp
===================================================================
--- game2/src/signs_gui.cpp	(revision 14035)
+++ game2/src/signs_gui.cpp	(working copy)
@@ -79,6 +79,8 @@
 struct SignListWindow : Window, SignList {
 	SignListWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->vscroll.cap = 12;
 		this->resize.step_height = 10;
 		this->resize.height = this->height - 10 * 7; // minimum if 5 in the list
@@ -190,6 +192,8 @@
 
 	SignWindow(const WindowDesc *desc, const Sign *si) : QueryStringBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		SetBit(_no_scroll, SCROLL_EDIT);
 		this->caption = STR_280B_EDIT_SIGN_TEXT;
 		this->afilter = CS_ALPHANUMERAL;
Index: game2/src/graph_gui.cpp
===================================================================
--- game2/src/graph_gui.cpp	(revision 14035)
+++ game2/src/graph_gui.cpp	(working copy)
@@ -36,6 +36,8 @@
 struct GraphLegendWindow : Window {
 	GraphLegendWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		for (uint i = 3; i < this->widget_count; i++) {
 			if (!HasBit(_legend_excluded_players, i - 3)) this->LowerWidget(i);
 		}
@@ -418,6 +420,7 @@
 	OperatingProfitGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 18, 136, true, STR_CURRCOMPACT)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -457,6 +460,7 @@
 	IncomeGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 18, 104, false, STR_CURRCOMPACT)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -494,6 +498,7 @@
 	DeliveredCargoGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 18, 104, false, STR_7024)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -531,6 +536,7 @@
 	PerformanceHistoryGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 18, 200, false, STR_7024)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -575,6 +581,7 @@
 	CompanyValueGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 18, 200, false, STR_CURRCOMPACT)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -612,6 +619,8 @@
 	PaymentRatesGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
 			BaseGraphWindow(desc, window_number, 2, 24, 200, false, STR_CURRCOMPACT)
 	{
+		InitializeSize(desc);
+
 		uint num_active = 0;
 		for (CargoID c = 0; c < NUM_CARGO; c++) {
 			if (GetCargo(c)->IsValid()) num_active++;
@@ -788,6 +797,8 @@
 public:
 	CompanyLeagueWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->players.ForceRebuild();
 		this->players.NeedResort();
 
@@ -868,6 +879,8 @@
 
 	PerformanceRatingDetailWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		/* Disable the players who are not active */
 		for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) {
 			this->SetWidgetDisabledState(i + PRW_PLAYER_FIRST, !IsValidPlayerID(i));
Index: game2/src/player_gui.cpp
===================================================================
--- game2/src/player_gui.cpp	(revision 14035)
+++ game2/src/player_gui.cpp	(working copy)
@@ -154,6 +154,8 @@
 			Window(desc, player),
 			small(show_small)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = this->window_number;
 
 		if (show_stickied) this->flags4 |= WF_STICKY;
@@ -373,6 +375,8 @@
 public:
 	SelectPlayerLiveryWindow(const WindowDesc *desc, PlayerID player) : Window(desc, player)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = player;
 		this->livery_class = LC_OTHER;
 		this->sel = 1;
@@ -762,6 +766,8 @@
 public:
 	SelectPlayerFaceWindow(const WindowDesc *desc, Window *parent, bool advanced, int top, int left) : Window(desc, parent->window_number)
 	{
+		InitializeSize(desc);
+
 		this->parent = parent;
 		this->caption_color = this->window_number;
 		this->face = GetPlayer((PlayerID)this->window_number)->face;
@@ -1172,6 +1178,8 @@
 
 	PlayerCompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
+
 		this->caption_color = this->window_number;
 		this->FindWindowPlacementAndResize(desc);
 	}
@@ -1364,6 +1372,7 @@
 struct BuyCompanyWindow : Window {
 	BuyCompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
@@ -1460,6 +1469,8 @@
 struct EndGameWindow : EndGameHighScoreBaseWindow {
 	EndGameWindow(const WindowDesc *desc) : EndGameHighScoreBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		/* Pause in single-player to have a look at the highscore at your own leisure */
 		if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
 
@@ -1522,6 +1533,8 @@
 {
 	HighScoreWindow(const WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc)
 	{
+		InitializeSize(desc);
+
 		/* pause game to show the chart */
 		if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
 
Index: game2/src/statusbar_gui.cpp
===================================================================
--- game2/src/statusbar_gui.cpp	(revision 14035)
+++ game2/src/statusbar_gui.cpp	(working copy)
@@ -70,6 +70,8 @@
 
 	StatusBarWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
+
 		CLRBITS(this->flags4, WF_WHITE_BORDER_MASK);
 		this->ticker_scroll = -1280;
 
Index: game2/src/cheat_gui.cpp
===================================================================
--- game2/src/cheat_gui.cpp	(revision 14035)
+++ game2/src/cheat_gui.cpp	(working copy)
@@ -131,6 +131,7 @@
 
 	CheatWindow(const WindowDesc *desc) : Window(desc)
 	{
+		InitializeSize(desc);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
