diff --git src/simutrans/ground/grund.cc src/simutrans/ground/grund.cc
index 8e73457fa..7fe995937 100644
--- src/simutrans/ground/grund.cc
+++ src/simutrans/ground/grund.cc
@@ -1702,10 +1702,12 @@ void grund_t::display_text_label(sint16 xpos, sint16 ypos, const char* text, con
 		}
 	}
 	else {
+		const int hpadding = (env_t::show_names >> 2) == 1 ? 1 : LINESPACE / 4;
 		const int vpadding = (env_t::show_names >> 2) == 1 ? 1 : LINESPACE / 7;
+		const int w = hpadding * 2 + gfx->calc_text_width_n(text, 0x7FFFu);
 		const int h = vpadding * 2 + LINESPACE;
 		for (int i = 0; i < num_players; i++) {
-			PUSH_CLIP_FIT(xpos, ypos - vpadding + (i*h)/num_players, 1000, h / num_players + 1);
+			PUSH_CLIP_FIT(xpos + (i*w)/num_players, ypos - vpadding, w / num_players + 1, h);
 			player_t* player = players[i];
 			switch (env_t::show_names >> 2) {
 				case 0: {
