diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
index d3d929b43..dcb414666 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
@@ -139,6 +139,10 @@ object Migrations {
                     }
                 }
             }
+            if (oldVersion < 59) {
+                // Reset rotation to Free after replacing Lock
+                preferences.rotation().set(1)
+            }
             return true
         }
 
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index 804397630..327da24c5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -372,8 +372,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
             setTooltip(R.string.pref_rotation_type)
 
             setOnClickListener {
-                val newOrientation =
-                    OrientationType.getNextOrientation(preferences.rotation().get(), resources)
+                val newOrientation = OrientationType.getNextOrientation(preferences.rotation().get())
 
                 preferences.rotation().set(newOrientation.prefValue)
                 setOrientation(newOrientation.flag)
@@ -422,7 +421,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
     }
 
     private fun updateRotationShortcut(preference: Int) {
-        val orientation = OrientationType.fromPreference(preference, resources)
+        val orientation = OrientationType.fromPreference(preference)
         binding.actionRotation.setImageResource(orientation.iconRes)
     }
 
@@ -768,7 +767,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
      * Forces the user preferred [orientation] on the activity.
      */
     private fun setOrientation(orientation: Int) {
-        val newOrientation = OrientationType.fromPreference(orientation, resources)
+        val newOrientation = OrientationType.fromPreference(orientation)
         if (newOrientation.flag != requestedOrientation) {
             requestedOrientation = newOrientation.flag
         }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt
index f5f79027a..5f358a670 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/OrientationType.kt
@@ -1,8 +1,6 @@
 package eu.kanade.tachiyomi.ui.reader.setting
 
 import android.content.pm.ActivityInfo
-import android.content.res.Configuration
-import android.content.res.Resources
 import androidx.annotation.DrawableRes
 import androidx.annotation.StringRes
 import eu.kanade.tachiyomi.R
@@ -10,33 +8,18 @@ import eu.kanade.tachiyomi.util.lang.next
 
 enum class OrientationType(val prefValue: Int, val flag: Int, @StringRes val stringRes: Int, @DrawableRes val iconRes: Int) {
     FREE(1, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, R.string.rotation_free, R.drawable.ic_screen_rotation_24dp),
-    LOCKED_PORTRAIT(2, ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT, R.string.rotation_lock, R.drawable.ic_screen_lock_rotation_24dp),
-    LOCKED_LANDSCAPE(2, ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, R.string.rotation_lock, R.drawable.ic_screen_lock_rotation_24dp),
-    PORTRAIT(3, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, R.string.rotation_force_portrait, R.drawable.ic_screen_lock_portrait_24dp),
-    LANDSCAPE(4, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, R.string.rotation_force_landscape, R.drawable.ic_screen_lock_landscape_24dp);
+    PORTRAIT(2, ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT, R.string.rotation_portrait, R.drawable.ic_stay_current_portrait_24dp),
+    LANDSCAPE(3, ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, R.string.rotation_landscape, R.drawable.ic_stay_current_landscape_24dp),
+    LOCKED_PORTRAIT(4, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, R.string.rotation_force_portrait, R.drawable.ic_screen_lock_portrait_24dp),
+    LOCKED_LANDSCAPE(5, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, R.string.rotation_force_landscape, R.drawable.ic_screen_lock_landscape_24dp),
+    ;
 
     companion object {
-        fun fromPreference(preference: Int, resources: Resources): OrientationType = when (preference) {
-            2 -> {
-                val currentOrientation = resources.configuration.orientation
-                if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
-                    LOCKED_PORTRAIT
-                } else {
-                    LOCKED_LANDSCAPE
-                }
-            }
-            3 -> PORTRAIT
-            4 -> LANDSCAPE
-            else -> FREE
-        }
+        fun fromPreference(preference: Int): OrientationType =
+            values().find { it.prefValue == preference } ?: FREE
 
-        fun getNextOrientation(preference: Int, resources: Resources): OrientationType {
-            val current = if (preference == 2) {
-                // Avoid issue due to 2 types having the same prefValue
-                LOCKED_LANDSCAPE
-            } else {
-                fromPreference(preference, resources)
-            }
+        fun getNextOrientation(preference: Int): OrientationType {
+            val current = fromPreference(preference)
             return current.next()
         }
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
index a3e0aa065..6524d3b81 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
@@ -78,11 +78,12 @@ class SettingsReaderController : SettingsController() {
                 titleRes = R.string.pref_rotation_type
                 entriesRes = arrayOf(
                     R.string.rotation_free,
-                    R.string.rotation_lock,
+                    R.string.rotation_portrait,
+                    R.string.rotation_landscape,
                     R.string.rotation_force_portrait,
-                    R.string.rotation_force_landscape
+                    R.string.rotation_force_landscape,
                 )
-                entryValues = arrayOf("1", "2", "3", "4")
+                entryValues = arrayOf("1", "2", "3", "4", "5")
                 defaultValue = "1"
                 summary = "%s"
             }
diff --git a/app/src/main/res/drawable/ic_stay_current_landscape_24dp.xml b/app/src/main/res/drawable/ic_stay_current_landscape_24dp.xml
new file mode 100644
index 000000000..ac185cda4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_stay_current_landscape_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:fillColor="@android:color/black"
+        android:pathData="M1.01,7L1,17c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2V7c0,-1.1 -0.9,-2 -2,-2H3c-1.1,0 -1.99,0.9 -1.99,2zM19,7v10H5V7h14z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_stay_current_portrait_24dp.xml b/app/src/main/res/drawable/ic_stay_current_portrait_24dp.xml
new file mode 100644
index 000000000..23e9f4f26
--- /dev/null
+++ b/app/src/main/res/drawable/ic_stay_current_portrait_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:fillColor="@android:color/black"
+        android:pathData="M17,1.01L7,1c-1.1,0 -1.99,0.9 -1.99,2v18c0,1.1 0.89,2 1.99,2h10c1.1,0 2,-0.9 2,-2V3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19H7V5h10v14z" />
+</vector>
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 7dafac408..9479f9422 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -62,7 +62,8 @@
 
     <string-array name="rotation_type">
         <item>@string/rotation_free</item>
-        <item>@string/rotation_lock</item>
+        <item>@string/rotation_portrait</item>
+        <item>@string/rotation_landscape</item>
         <item>@string/rotation_force_portrait</item>
         <item>@string/rotation_force_landscape</item>
     </string-array>
@@ -72,6 +73,7 @@
         <item>2</item>
         <item>3</item>
         <item>4</item>
+        <item>5</item>
     </string-array>
 
     <string-array name="color_filter_modes">
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index aac4233be..786ebbea8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -332,9 +332,10 @@
     <string name="double_tap_anim_speed_fast">Fast</string>
     <string name="pref_rotation_type">Rotation</string>
     <string name="rotation_free">Free</string>
-    <string name="rotation_lock">Lock</string>
-    <string name="rotation_force_portrait">Force portrait</string>
-    <string name="rotation_force_landscape">Force landscape</string>
+    <string name="rotation_portrait">Portrait</string>
+    <string name="rotation_landscape">Landscape</string>
+    <string name="rotation_force_portrait">Locked portrait</string>
+    <string name="rotation_force_landscape">Locked landscape</string>
     <string name="color_filter_r_value">R</string>
     <string name="color_filter_g_value">G</string>
     <string name="color_filter_b_value">B</string>