diff --git a/src/p_user.c b/src/p_user.c
index f973a77269b582f011fab26313b76c4e4bd994fd..84fbd2e81639b5abb6ab18294c233074e44ec560 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -7776,11 +7776,14 @@ void P_SpawnSkidDust(player_t *player, fixed_t radius, boolean sound)
 	mobj_t *mo = player->mo;
 	mobj_t *particle;
 
-	radius >>= FRACBITS;
-	if (radius)
-		particle = P_SpawnMobjFromMobj(mo, P_RandomRange(-radius, radius) << FRACBITS, P_RandomRange(-radius, radius) << FRACBITS, 0, MT_SPINDUST);
-	else
-		particle = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPINDUST);
+	particle = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPINDUST);
+	if (radius >>= FRACBITS)
+	{
+		P_UnsetThingPosition(particle);
+		particle->x += P_RandomRange(-radius, radius) << FRACBITS;
+		particle->y += P_RandomRange(-radius, radius) << FRACBITS;
+		P_SetThingPosition(particle);
+	}
 	particle->tics = 10;
 
 	particle->destscale = (2*mo->scale)/3;