diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt
new file mode 100644
index 000000000..aedc95361
--- /dev/null
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt
@@ -0,0 +1,43 @@
+package eu.kanade.tachiyomi.ui.base.changehandler
+
+import android.animation.Animator
+import android.animation.AnimatorSet
+import android.animation.ObjectAnimator
+import android.view.View
+import android.view.ViewGroup
+import com.bluelinelabs.conductor.ControllerChangeHandler
+import com.bluelinelabs.conductor.changehandler.AnimatorChangeHandler
+
+/**
+ * An [AnimatorChangeHandler] that will cross fade two views
+ */
+class OneWayFadeChangeHandler : AnimatorChangeHandler {
+    constructor()
+    constructor(removesFromViewOnPush: Boolean) : super(removesFromViewOnPush)
+    constructor(duration: Long) : super(duration)
+    constructor(duration: Long, removesFromViewOnPush: Boolean) : super(
+        duration,
+        removesFromViewOnPush
+    )
+
+    override fun getAnimator(container: ViewGroup, from: View?, to: View?, isPush: Boolean, toAddedToContainer: Boolean): Animator {
+        val animator = AnimatorSet()
+        if (to != null) {
+            val start: Float = if (toAddedToContainer) 0F else to.alpha
+            animator.play(ObjectAnimator.ofFloat(to, View.ALPHA, start, 1f))
+        }
+
+        if (from != null && (!isPush || removesFromViewOnPush())) {
+            container.removeView(from)
+        }
+        return animator
+    }
+
+    override fun resetFromView(from: View) {
+        from.alpha = 1f
+    }
+
+    override fun copy(): ControllerChangeHandler {
+        return OneWayFadeChangeHandler(animationDuration, removesFromViewOnPush())
+    }
+}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt
index ef4239912..4b9cf2c76 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt
@@ -6,7 +6,7 @@ import androidx.core.content.ContextCompat
 import com.bluelinelabs.conductor.Controller
 import com.bluelinelabs.conductor.Router
 import com.bluelinelabs.conductor.RouterTransaction
-import com.bluelinelabs.conductor.changehandler.FadeChangeHandler
+import eu.kanade.tachiyomi.ui.base.changehandler.OneWayFadeChangeHandler
 
 fun Router.popControllerWithTag(tag: String): Boolean {
     val controller = getControllerWithTag(tag)
@@ -30,6 +30,6 @@ fun Controller.requestPermissionsSafe(permissions: Array<String>, requestCode: I
 
 fun Controller.withFadeTransaction(): RouterTransaction {
     return RouterTransaction.with(this)
-        .pushChangeHandler(FadeChangeHandler())
-        .popChangeHandler(FadeChangeHandler())
+        .pushChangeHandler(OneWayFadeChangeHandler())
+        .popChangeHandler(OneWayFadeChangeHandler())
 }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
index 6b3770fbd..bee547e63 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
@@ -16,7 +16,6 @@ import com.bluelinelabs.conductor.Controller
 import com.bluelinelabs.conductor.ControllerChangeHandler
 import com.bluelinelabs.conductor.Router
 import com.bluelinelabs.conductor.RouterTransaction
-import com.bluelinelabs.conductor.changehandler.FadeChangeHandler
 import com.google.android.material.appbar.AppBarLayout
 import com.google.android.material.behavior.HideBottomViewOnScrollBehavior
 import com.google.android.material.tabs.TabLayout
@@ -26,6 +25,7 @@ import eu.kanade.tachiyomi.data.preference.asImmediateFlow
 import eu.kanade.tachiyomi.databinding.MainActivityBinding
 import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
 import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
+import eu.kanade.tachiyomi.ui.base.changehandler.OneWayFadeChangeHandler
 import eu.kanade.tachiyomi.ui.base.controller.DialogController
 import eu.kanade.tachiyomi.ui.base.controller.FabController
 import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
@@ -369,7 +369,7 @@ class MainActivity : BaseActivity<MainActivityBinding>() {
     }
 
     private fun setRoot(controller: Controller, id: Int) {
-        router.setRoot(RouterTransaction.with(controller).tag(id.toString()).pushChangeHandler(FadeChangeHandler()).popChangeHandler(FadeChangeHandler()))
+        router.setRoot(RouterTransaction.with(controller).tag(id.toString()).pushChangeHandler(OneWayFadeChangeHandler()).popChangeHandler(OneWayFadeChangeHandler()))
     }
 
     private fun syncActivityViewWithController(to: Controller?, from: Controller? = null) {