diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp
index f1a3d665e..a035889a6 100644
--- a/source/sw/src/player.cpp
+++ b/source/sw/src/player.cpp
@@ -1929,7 +1929,19 @@ DoPlayerHorizon(PLAYERp pp, fix16_t *pq16horiz, fix16_t q16horz)
 
     if (TEST_SYNC_KEY(pp, SK_CENTER_VIEW))
     {
-        *pq16horiz = pp->q16horizbase = fix16_from_int(100);
+        if (PEDANTIC_MODE)
+            pp->q16horizbase = fix16_from_int(100);
+        else if (pp->q16horizbase > fix16_from_int(100))
+        {
+            pp->q16horizbase = fix16_ssub(pp->q16horizbase, fix16_from_float(scaleAdjustmentToInterval((HORIZ_SPEED*6))));
+            pp->q16horizbase = fix16_max(pp->q16horizbase, fix16_from_int(100));
+        }
+        else if (pp->q16horizbase < fix16_from_int(100))
+        {
+            pp->q16horizbase = fix16_sadd(pp->q16horizbase, fix16_from_float(scaleAdjustmentToInterval((HORIZ_SPEED*6))));
+            pp->q16horizbase = fix16_min(pp->q16horizbase, fix16_from_int(100));
+        }
+        pp->camq16horiz = pp->q16horizbase;
         pp->q16horizoff = 0;
     }