Index: engine.h
===================================================================
--- engine.h	(revision 545)
+++ engine.h	(working copy)
@@ -91,7 +91,9 @@
 	GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \
 	                      _global_cargo_id[_opt.landscape][v->cargo_type], \
 	                      ((v->cargo_count + 1) * 100) / (v->cargo_cap + 1), \
-	                      !!v->cur_speed, direction);
+	                      !!v->cur_speed, direction)
+#define GetCustomVehicleIcon(v, direction) \
+	GetCustomEngineSprite(v, -1, CID_PURCHASE, 0, 0, direction)
 
 void SetCustomEngineName(int engine, char *name);
 StringID GetCustomEngineName(int engine);
Index: train_cmd.c
===================================================================
--- train_cmd.c	(revision 545)
+++ train_cmd.c	(working copy)
@@ -174,7 +174,7 @@
 	uint32 image = 0;
 
 	if (is_custom_sprite(img)) {
-		image = GetCustomEngineSprite(engine, -1, CID_PURCHASE, 0, 0, 6);
+		image = GetCustomVehicleIcon(engine, 6);
 		if (!image) img = _engine_original_sprites[engine];
 	}
 	if (!image) {
@@ -186,7 +186,7 @@
 		x += 15;
 		image = 0;
 		if (is_custom_sprite(img)) {
-			image = GetCustomEngineSprite(engine, -1, CID_PURCHASE, 0, 0, 2);
+			image = GetCustomVehicleIcon(engine, 2);
 			if (!image) img = _engine_original_sprites[engine];
 		}
 		if (!image) {
Index: ship_cmd.c
===================================================================
--- ship_cmd.c	(revision 545)
+++ ship_cmd.c	(working copy)
@@ -24,7 +24,7 @@
 	int spritenum = ship_vehicle_info(engine).image_index;
 
 	if (is_custom_sprite(spritenum)) {
-		int sprite = GetCustomEngineSprite(engine, 0xffff, CID_PURCHASE, 0, 0, 6);
+		int sprite = GetCustomVehicleIcon(engine, 6);
 
 		if (sprite) {
 			DrawSprite(sprite | image_ormod, x, y);
