diff --git a/src/g_game.c b/src/g_game.c
index ad25c8ce990ee02c4160dc825fbc6eb1689547bf..713eecac158cee4db05d60b2e0a804a018759d85 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -5283,7 +5283,7 @@ void G_ReadMetalTic(mobj_t *metal)
 	speed = FixedDiv(P_AproxDistance(oldmetal.momx, oldmetal.momy), metal->scale)>>FRACBITS;
 
 	// Use speed to decide an appropriate state
-	if (speed > 28) // default skin runspeed
+	if (speed > 20) // default skin runspeed
 		statetype = 2;
 	else if (speed > 1) // stopspeed
 		statetype = 1;
diff --git a/src/k_kart.c b/src/k_kart.c
index c6f028872c8bbf68e14934c401c68edb9839d9eb..8d1e9373aa8f966544de11fbf1fc75518f6d6a7f 100644
--- a/src/k_kart.c
+++ b/src/k_kart.c
@@ -1634,7 +1634,7 @@ void K_KartMoveAnimation(player_t *player)
 			P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R);
 	}
 	// Run frames - S_KART_RUN1   S_KART_RUN1_L   S_KART_RUN1_R
-	else if (player->speed > FixedMul(player->runspeed, player->mo->scale))
+	else if (player->speed > (20*player->mo->scale))
 	{
 		if (cmd->driftturn < 0 && !(player->mo->state >= &states[S_KART_RUN1_R] && player->mo->state <= &states[S_KART_RUN2_R]))
 			P_SetPlayerMobjState(player->mo, S_KART_RUN1_R);
@@ -1644,7 +1644,7 @@ void K_KartMoveAnimation(player_t *player)
 			P_SetPlayerMobjState(player->mo, S_KART_RUN1);
 	}
 	// Walk frames - S_KART_WALK1   S_KART_WALK1_L   S_KART_WALK1_R
-	else if (player->speed <= FixedMul(player->runspeed, player->mo->scale))
+	else if (player->speed <= (20*player->mo->scale))
 	{
 		if (cmd->driftturn < 0 && !(player->mo->state >= &states[S_KART_WALK1_R] && player->mo->state <= &states[S_KART_WALK2_R]))
 			P_SetPlayerMobjState(player->mo, S_KART_WALK1_R);