diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index b786429759496bb02dfc04d3c3316a2a39c29764..a1b8a61bc048c9fcce2a165deb62a01e6bff4fef 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -5332,7 +5332,10 @@ static void HWR_ProjectSprite(mobj_t *thing)
 		vis->gpatch = (patch_t *)W_CachePatchNum(sprframe->lumppat[rot], PU_SPRITE);
 
 	vis->mobj = thing;
-	vis->color = thing->color;
+	if ((thing->flags2 & MF2_LINKDRAW) && thing->tracer && thing->color == SKINCOLOR_NONE)
+		vis->color = thing->tracer->color;
+	else
+		vis->color = thing->color;
 
 	//Hurdler: 25/04/2000: now support colormap in hardware mode
 	if ((vis->mobj->flags & (MF_ENEMY|MF_BOSS)) && (vis->mobj->flags2 & MF2_FRET) && !(vis->mobj->flags & MF_GRENADEBOUNCE) && (leveltime & 1)) // Bosses "flash"
diff --git a/src/r_things.c b/src/r_things.c
index 6c7557cd1ca687434642f6202ed941ba007a331b..a22c6e2cc9c9c5b67eb57ff9c19dfad2ceb67b5c 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -1962,7 +1962,10 @@ static void R_ProjectSprite(mobj_t *thing)
 	vis->shear.offset = 0;
 
 	vis->mobj = thing; // Easy access! Tails 06-07-2002
-	vis->color = oldthing->color;
+	if ((oldthing->flags2 & MF2_LINKDRAW) && oldthing->tracer && oldthing->color == SKINCOLOR_NONE)
+		vis->color = oldthing->tracer->color;
+	else
+		vis->color = oldthing->color;
 
 	vis->x1 = x1 < portalclipstart ? portalclipstart : x1;
 	vis->x2 = x2 >= portalclipend ? portalclipend-1 : x2;