diff --git a/keyserver/src/fetchers/thread-fetchers.js b/keyserver/src/fetchers/thread-fetchers.js
--- a/keyserver/src/fetchers/thread-fetchers.js
+++ b/keyserver/src/fetchers/thread-fetchers.js
@@ -117,7 +117,7 @@
       t.community, t.depth, t.color, t.description, t.type, t.creation_time,
       t.source_message, t.replies_count, t.avatar, t.pinned_count, m.user,
       m.role, m.permissions, m.subscription,
-      m.last_read_message < m.last_message AS unread, m.sender,
+      m.last_read_message < m.last_message_for_unread_check AS unread, m.sender,
       up.id AS upload_id, up.secret AS upload_secret, up.extra AS upload_extra
   `
     .append(primaryFetchClause)
diff --git a/keyserver/src/push/rescind.js b/keyserver/src/push/rescind.js
--- a/keyserver/src/push/rescind.js
+++ b/keyserver/src/push/rescind.js
@@ -64,7 +64,7 @@
       ) AS unread_count
     FROM notifications n
     LEFT JOIN memberships m ON m.user = n.user
-      AND m.last_message > m.last_read_message 
+      AND m.last_message_for_unread_check > m.last_read_message
       AND m.role > 0 
       AND JSON_EXTRACT(subscription, ${notificationExtractString})
       AND JSON_EXTRACT(permissions, ${visPermissionExtractString})
diff --git a/keyserver/src/push/utils.js b/keyserver/src/push/utils.js
--- a/keyserver/src/push/utils.js
+++ b/keyserver/src/push/utils.js
@@ -205,7 +205,8 @@
   const query = SQL`
     SELECT user, COUNT(thread) AS unread_count
     FROM memberships
-    WHERE user IN (${userIDs}) AND last_message > last_read_message
+    WHERE user IN (${userIDs})
+      AND last_message_for_unread_check > last_read_message
       AND role > 0
       AND JSON_EXTRACT(permissions, ${visPermissionExtractString})
       AND JSON_EXTRACT(subscription, ${notificationExtractString})