diff --git a/src/simutrans/obj/way/weg.cc b/src/simutrans/obj/way/weg.cc
index 3257b187f..2d594678a 100644
--- a/src/simutrans/obj/way/weg.cc
+++ b/src/simutrans/obj/way/weg.cc
@@ -451,10 +451,17 @@ bool weg_t::check_season(const bool calc_only_season_change)
 	}
 
 	if(  is_close_diagonal()  ) {
-		// double diagonals
-		set_images(image_close_diagonal, is_close_diagonal(), snow);
+		// double diagonals: mirror calc_image() - the close-diagonal image, or the
+		// matching diagonal image when the pakset defines no close-diagonal one.
+		// Must be part of this if/else chain, else the switch branch overwrites it.
+		if(  desc->has_close_diagonal_image()  ) {
+			set_images(image_close_diagonal, is_close_diagonal(), snow);
+		}
+		else {
+			set_images(image_diagonal, is_close_diagonal() == 1 ? ribi_t::southeast : ribi_t::northeast, snow);
+		}
 	}
-	if(  is_diagonal()  ) {
+	else if(  is_diagonal()  ) {
 		set_images( image_diagonal, ribi, snow );
 	}
 	else if(  ribi_t::is_threeway( ribi )  &&  desc->get_waytype()!=road_wt  ) {
