diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index 465453b10004a260249a31e1daf6203db25c31af..b6164d4d24e182841d9355531d93d5275c5db13b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -299,6 +299,7 @@ class MessageListFragment : ServiceBoundFragment() {
       }
     }
 
+    var previousLoadKey: Int? = null
     val data = combineLatest(viewModel.buffer,
                              viewModel.selectedMessages,
                              viewModel.expandedMessages,
@@ -315,7 +316,11 @@ class MessageListFragment : ServiceBoundFragment() {
               .setInitialLoadSizeHint(backlogSettings.pageSize)
               .setEnablePlaceholders(true)
               .build()
-          ).setBoundaryCallback(boundaryCallback).build()
+          ).setBoundaryCallback(boundaryCallback)
+            .letIf(lastBuffer == buffer) {
+              it.setInitialLoadKey(previousLoadKey)
+            }
+            .build()
         }
       }
 
@@ -371,6 +376,7 @@ class MessageListFragment : ServiceBoundFragment() {
 
     var lastBuffer = -1
     data.observe(this, Observer { list ->
+      previousLoadKey = list?.lastKey as? Int
       val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition()
       val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.content?.messageId
       runInBackground {