diff --git a/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt b/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt
index 144b8ea27..b945906a4 100644
--- a/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt
+++ b/app/src/main/java/eu/kanade/presentation/reader/BrightnessOverlay.kt
@@ -1,5 +1,6 @@
 package eu.kanade.presentation.reader
 
+import androidx.annotation.IntRange
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
@@ -10,7 +11,7 @@ import kotlin.math.abs
 
 @Composable
 fun BrightnessOverlay(
-    value: Int,
+    @IntRange(from = -100, to = 100) value: Int,
 ) {
     if (value >= 0) return
 
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
index 895a48e61..fd512dcc5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
@@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.reader
 import android.app.Application
 import android.net.Uri
 import androidx.annotation.ColorInt
+import androidx.annotation.IntRange
 import androidx.compose.runtime.Immutable
 import androidx.lifecycle.SavedStateHandle
 import androidx.lifecycle.ViewModel
@@ -1250,7 +1251,7 @@ class ReaderViewModel @JvmOverloads constructor(
         val viewer: Viewer? = null,
         val dialog: Dialog? = null,
         val menuVisible: Boolean = false,
-        val brightnessOverlayValue: Int = 0,
+        @IntRange(from = -100, to = 100) val brightnessOverlayValue: Int = 0,
 
         // SY -->
         val currentPageText: String = "",
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
index 4ac632d8d..87cd851a8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
@@ -126,7 +126,7 @@ class PagerPageHolder(
      */
     private fun setQueued() {
         progressIndicator.show()
-        errorLayout?.root?.isVisible = false
+        removeErrorLayout()
     }
 
     /**
@@ -134,7 +134,7 @@ class PagerPageHolder(
      */
     private fun setLoading() {
         progressIndicator.show()
-        errorLayout?.root?.isVisible = false
+        removeErrorLayout()
     }
 
     /**
@@ -142,7 +142,7 @@ class PagerPageHolder(
      */
     private fun setDownloading() {
         progressIndicator.show()
-        errorLayout?.root?.isVisible = false
+        removeErrorLayout()
     }
 
     /**
@@ -154,7 +154,6 @@ class PagerPageHolder(
         } else {
             progressIndicator.setProgress(95)
         }
-        errorLayout?.root?.isVisible = false
 
         val streamFn = page.stream ?: return
         val streamFn2 = extraPage?.stream
@@ -207,6 +206,7 @@ class PagerPageHolder(
                     pageBackground = background
                 }
             }
+            removeErrorLayout()
         }
     }
 
@@ -456,4 +456,12 @@ class PagerPageHolder(
         errorLayout?.root?.isVisible = true
         return errorLayout!!
     }
+
+    /**
+     * Removes the decode error layout from the holder, if found.
+     */
+    private fun removeErrorLayout() {
+        errorLayout?.root?.isVisible = false
+        errorLayout = null
+    }
 }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
index db1a3d934..5c58ade0e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
@@ -181,7 +181,6 @@ class WebtoonPageHolder(
      */
     private suspend fun setImage() {
         progressIndicator.setProgress(0)
-        removeErrorLayout()
 
         val streamFn = page?.stream ?: return
 
@@ -202,6 +201,7 @@ class WebtoonPageHolder(
                     cropBorders = (viewer.config.imageCropBorders && viewer.isContinuous) || (viewer.config.continuousCropBorders && !viewer.isContinuous),
                 ),
             )
+            removeErrorLayout()
         }
         // Suspend the coroutine to close the input stream only when the WebtoonPageHolder is recycled
         suspendCancellableCoroutine<Nothing> { continuation ->
@@ -240,6 +240,7 @@ class WebtoonPageHolder(
      */
     private fun onImageDecoded() {
         progressContainer.isVisible = false
+        removeErrorLayout()
     }
 
     /**