diff --git a/source/blood/src/controls.cpp b/source/blood/src/controls.cpp
index ed650be3b..497d147e4 100644
--- a/source/blood/src/controls.cpp
+++ b/source/blood/src/controls.cpp
@@ -106,10 +106,6 @@ static void GetInputInternal(ControlInfo* const hidInput)
     static int32_t lastInputClock;  // MED
     int32_t const  elapsedTics = gFrameClock - lastInputClock;
 
-    // Blood's q16mlook scaling is different from the other games, therefore use the below constant to attenuate
-    // the speed to match the other games.
-    float const mlookScale = 3.25f;
-
     lastInputClock = gFrameClock;
 
     if (turnLeft || turnRight)
@@ -138,14 +134,14 @@ static void GetInputInternal(ControlInfo* const hidInput)
     input.fvel -= xs_CRoundToInt(scaleAdjust * (hidInput->dz * keyMove));
 
     if (mouseaim)
-        input.q16horz += FloatToFixed(hidInput->mousey / mlookScale);
+        input.q16horz += FloatToFixed(hidInput->mousey);
     else
         input.fvel -= xs_CRoundToInt(hidInput->mousey * 64.);
 
     if (!in_mouseflip)
         input.q16horz = -input.q16horz;
 
-    input.q16horz -= FloatToFixed(scaleAdjust * (hidInput->dpitch / mlookScale));
+    input.q16horz -= FloatToFixed(scaleAdjust * hidInput->dpitch);
 
     gInput.fvel = clamp(gInput.fvel + input.fvel, -2048, 2048);
     gInput.svel = clamp(gInput.svel + input.svel, -2048, 2048);
diff --git a/source/blood/src/player.cpp b/source/blood/src/player.cpp
index 1bf1b3e29..a2982cfc1 100644
--- a/source/blood/src/player.cpp
+++ b/source/blood/src/player.cpp
@@ -1363,7 +1363,7 @@ void sethorizon(PLAYER *pPlayer, fixed_t const q16horz, double const scaleAdjust
             pPlayer->q16look = max(pPlayer->q16look - FloatToFixed(scaleAdjust * 4.), IntToFixed(-60));
     }
 
-    pPlayer->q16look = clamp(pPlayer->q16look + q16horz, IntToFixed(-60), IntToFixed(60));
+    pPlayer->q16look = clamp(pPlayer->q16look, IntToFixed(-60), IntToFixed(60));
 
     if (pPlayer->q16look > 0)
     {
@@ -1375,7 +1375,7 @@ void sethorizon(PLAYER *pPlayer, fixed_t const q16horz, double const scaleAdjust
     }
     else
     {
-        pPlayer->q16horiz = 0;
+        pPlayer->q16horiz = clamp(pPlayer->q16horiz + q16horz, IntToFixed(-179), IntToFixed(119));
     }
 }
 
diff --git a/source/blood/src/player.h b/source/blood/src/player.h
index 6aa96752a..0a4cdd947 100644
--- a/source/blood/src/player.h
+++ b/source/blood/src/player.h
@@ -109,8 +109,8 @@ struct PLAYER
     int                 zWeapon;
     int                 zWeaponVel;
     fixed_t             q16look;
-    int                 q16horiz;       // horiz
-    int                 q16slopehoriz;  // horizoff
+    fixed_t             q16horiz;       // horiz
+    fixed_t             q16slopehoriz;  // horizoff
     int                 slope;
     bool                isUnderwater;
     bool                hasKey[8];