diff --git a/src/simutrans/gui/components/gui_scrollpane.cc b/src/simutrans/gui/components/gui_scrollpane.cc
index 3839daeb3..6ebdd3694 100644
--- a/src/simutrans/gui/components/gui_scrollpane.cc
+++ b/src/simutrans/gui/components/gui_scrollpane.cc
@@ -39,6 +39,13 @@ gui_scrollpane_t::gui_scrollpane_t(gui_component_t* comp, bool b_scroll_x, bool
 }
 
 
+// unlike scroll_x.is_visible() this is already valid before the first redraw
+bool gui_scrollpane_t::needs_scroll_x() const
+{
+	return b_show_scroll_x  &&  (scroll_x.is_visible()  ||  comp->get_min_size().w > max_width);
+}
+
+
 scr_size gui_scrollpane_t::get_min_size() const
 {
 	// the component does not have a minimum scroll size
@@ -59,8 +66,8 @@ scr_size gui_scrollpane_t::get_min_size() const
 scr_size gui_scrollpane_t::get_max_size() const
 {
 	scr_size csize = comp->get_max_size();
-	if (csize.h!=scr_size::inf.h  &&  scroll_x.is_visible()  &&  !b_show_scroll_y) {
-		// need to add space for x-scroolbar as y-scrolling is out of question
+	if (csize.h!=scr_size::inf.h  &&  needs_scroll_x()) {
+		// reserve space, or the x-scrollbar is drawn on top of the last line
 		csize.h += D_SCROLLBAR_HEIGHT;
 	}
 	return csize;
diff --git a/src/simutrans/gui/components/gui_scrollpane.h b/src/simutrans/gui/components/gui_scrollpane.h
index 5b3116c77..f38ad9eda 100644
--- a/src/simutrans/gui/components/gui_scrollpane.h
+++ b/src/simutrans/gui/components/gui_scrollpane.h
@@ -48,6 +48,9 @@ protected:
 	void recalc_sliders_visible(scr_size size);
 	void recalc_sliders(scr_size size);
 
+	/// true if the horizontal slider will be needed, valid before the first redraw
+	bool needs_scroll_x() const;
+
 public:
 	/**
 	 * @param comp the scrolling component
