diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt
index 852cd76e1..1948bcdf1 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonLayoutManager.kt
@@ -13,12 +13,7 @@ import androidx.recyclerview.widget.RecyclerView.NO_POSITION
  * This layout manager uses the same package name as the support library in order to use a package
  * protected method.
  */
-class WebtoonLayoutManager(context: Context) : LinearLayoutManager(context) {
-
-    /**
-     * Extra layout space is set to half the screen height.
-     */
-    private val extraLayoutSpace = context.resources.displayMetrics.heightPixels / 2
+class WebtoonLayoutManager(context: Context, private val extraLayoutSpace: Int) : LinearLayoutManager(context) {
 
     init {
         isItemPrefetchEnabled = false
@@ -27,6 +22,7 @@ class WebtoonLayoutManager(context: Context) : LinearLayoutManager(context) {
     /**
      * Returns the custom extra layout space.
      */
+    @Deprecated("Deprecated in Java")
     override fun getExtraLayoutSpace(state: RecyclerView.State): Int {
         return extraLayoutSpace
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
index 1d5390800..c70f9d27b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
@@ -53,10 +53,15 @@ class WebtoonViewer(
      */
     private val frame = WebtoonFrame(activity)
 
+    /**
+     * Distance to scroll when the user taps on one side of the recycler view.
+     */
+    private val scrollDistance = activity.resources.displayMetrics.heightPixels * 3 / 4
+
     /**
      * Layout manager of the recycler view.
      */
-    private val layoutManager = WebtoonLayoutManager(activity)
+    private val layoutManager = WebtoonLayoutManager(activity, scrollDistance)
 
     /**
      * Configuration used by this viewer, like allow taps, or crop image borders.
@@ -68,11 +73,6 @@ class WebtoonViewer(
      */
     private val adapter = WebtoonAdapter(this)
 
-    /**
-     * Distance to scroll when the user taps on one side of the recycler view.
-     */
-    private var scrollDistance = activity.resources.displayMetrics.heightPixels * 3 / 4
-
     /**
      * Currently active item. It can be a chapter page or a chapter transition.
      */
@@ -86,6 +86,7 @@ class WebtoonViewer(
             .threshold
 
     init {
+        recycler.setItemViewCacheSize(RecyclerViewCacheSize)
         recycler.isVisible = false // Don't let the recycler layout yet
         recycler.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
         recycler.isFocusable = false
@@ -400,3 +401,5 @@ class WebtoonViewer(
         )
     }
 }
+
+private const val RecyclerViewCacheSize = 4