diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp
index 8860bc7590fa81572796b7cdbd3d28b94e2af5a3..881fd5bb7e101c55070b70f23b939cb972971853 100644
--- a/src/timeline/EventStore.cpp
+++ b/src/timeline/EventStore.cpp
@@ -71,11 +71,14 @@ EventStore::EventStore(std::string room_id, QObject *)
                           fetchMore();
                   else {
                           if (this->last != std::numeric_limits<uint64_t>::max()) {
+                                  auto oldFirst = this->first;
                                   emit beginInsertRows(toExternalIdx(newFirst),
                                                        toExternalIdx(this->first - 1));
                                   this->first = newFirst;
                                   emit endInsertRows();
                                   emit fetchedMore();
+                                  emit dataChanged(toExternalIdx(oldFirst),
+                                                   toExternalIdx(oldFirst));
                           } else {
                                   auto range = cache::client()->getTimelineRange(room_id_);
 
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 1e369b46dc99a4e4a493cc4924440abeb3634d32..e5e9d9bf735d050ca9e917348d63289e0487d801 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -354,18 +354,13 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
                 Qt::QueuedConnection);
         connect(this, &TimelineModel::addPendingMessageToStore, &events, &EventStore::addPending);
 
-        connect(
-          &events,
-          &EventStore::dataChanged,
-          this,
-          [this](int from, int to) {
-                  relatedEventCacheBuster++;
-                  nhlog::ui()->debug(
-                    "data changed {} to {}", events.size() - to - 1, events.size() - from - 1);
-                  emit dataChanged(index(events.size() - to - 1, 0),
-                                   index(events.size() - from - 1, 0));
-          },
-          Qt::QueuedConnection);
+        connect(&events, &EventStore::dataChanged, this, [this](int from, int to) {
+                relatedEventCacheBuster++;
+                nhlog::ui()->debug(
+                  "data changed {} to {}", events.size() - to - 1, events.size() - from - 1);
+                emit dataChanged(index(events.size() - to - 1, 0),
+                                 index(events.size() - from - 1, 0));
+        });
 
         connect(&events, &EventStore::beginInsertRows, this, [this](int from, int to) {
                 int first = events.size() - to;