diff --git a/src/signal.cpp b/src/signal.cpp index db3bb993f0..4f6a40dcd3 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -1244,10 +1244,11 @@ static void RefreshBridgeOnExitAspectChange(TileIndex entrance, TileIndex exit) const TileIndexDiffC offset = TileIndexDiffCByDiagDir(GetTunnelBridgeDirection(entrance)); const TileIndexDiff diff = TileDiffXY(offset.x * simulated_wormhole_signals, offset.y * simulated_wormhole_signals); const uint signal_count = bridge_length / simulated_wormhole_signals; - TileIndex tile = entrance; - for (uint i = signal_count; i > 0; i--) { - tile += diff; - if (i <= 2) MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE); + TileIndex tile = entrance + ((int)signal_count * diff); + const uint redraw_count = std::min(_extra_aspects, signal_count); + for (uint i = 0; i < redraw_count; i++) { + MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE); + tile -= diff; } }