diff --git a/src/p_user.c b/src/p_user.c
index fc9d6d5a9f8eb15b423e784d7ff02443612b8d75..e0ec84debc2059f5d893387f1062ff9031953c81 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -3695,6 +3695,8 @@ void P_DoJump(player_t *player, boolean soundandstate)
 
 	P_SetObjectMomZ(player->mo, FixedMul(factor, player->mo->momz), false); // Custom height
 
+	player->mo->momz = FixedMul(player->mo->momz, FixedSqrt(FixedDiv(FRACUNIT, NEWTICRATERATIO << FRACBITS)));
+
 	// set just an eensy above the ground
 	if (player->mo->eflags & MFE_VERTICALFLIP)
 	{