diff --git src/bp-activity/bp-activity-functions.php src/bp-activity/bp-activity-functions.php
index 2ca8d9f..cb550c7 100644
--- src/bp-activity/bp-activity-functions.php
+++ src/bp-activity/bp-activity-functions.php
@@ -133,6 +133,15 @@ function bp_activity_find_mentions( $content ) {
 function bp_activity_clear_new_mentions( $user_id ) {
 	bp_delete_user_meta( $user_id, 'bp_new_mention_count' );
 	bp_delete_user_meta( $user_id, 'bp_new_mentions'      );
+
+	/**
+	 * Fires once mentions has been reset for a given user.
+	 *
+	 * @since  2.5.0
+	 *
+	 * @param  int $user_id The id of the user whose unread mentions are being reset.
+	 */
+	do_action( 'bp_activity_clear_new_mentions', $user_id );
 }
 
 /**
diff --git src/bp-activity/bp-activity-notifications.php src/bp-activity/bp-activity-notifications.php
index 7fb5e92..beafe35 100644
--- src/bp-activity/bp-activity-notifications.php
+++ src/bp-activity/bp-activity-notifications.php
@@ -499,22 +499,24 @@ add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notifi
  * Mark at-mention notifications as read when users visit their Mentions page.
  *
  * @since 1.5.0
+ * @since 2.5.0 Add the $user_id parameter
  *
+ * @param int $user_id The id of the user whose notifications are marked as read.
  * @uses bp_notifications_mark_all_notifications_by_type()
  */
-function bp_activity_remove_screen_notifications() {
+function bp_activity_remove_screen_notifications( $user_id = 0 ) {
 	if ( ! bp_is_active( 'notifications' ) ) {
 		return;
 	}
 
-	// Only mark read if you're looking at your own mentions.
-	if ( ! bp_is_my_profile() ) {
+	// Only mark read if the current user is looking at his own mentions.
+	if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) {
 		return;
 	}
 
-	bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->activity->id, 'new_at_mention' );
+	bp_notifications_mark_notifications_by_type( $user_id, buddypress()->activity->id, 'new_at_mention' );
 }
-add_action( 'bp_activity_screen_mentions', 'bp_activity_remove_screen_notifications' );
+add_action( 'bp_activity_clear_new_mentions', 'bp_activity_remove_screen_notifications', 10, 1 );
 
 /**
  * Mark at-mention notification as read when user visits the activity with the mention.
diff --git tests/phpunit/testcases/activity/notifications.php tests/phpunit/testcases/activity/notifications.php
index 43d22f8..0604d0b 100644
--- tests/phpunit/testcases/activity/notifications.php
+++ tests/phpunit/testcases/activity/notifications.php
@@ -242,6 +242,33 @@ class BP_Tests_Activity_Notifications extends BP_UnitTestCase {
 	}
 
 	/**
+	 * @group bp_activity_remove_screen_notifications
+	 * @group mentions
+	 * @ticket BP6687
+	 */
+	public function test_bp_activity_remove_screen_notifications_on_new_mentions_cleared() {
+		$this->create_notifications();
+
+		$notifications = BP_Notifications_Notification::get( array(
+			'item_id' => $this->a1,
+		) );
+
+		// Double check it's there
+		$this->assertEquals( array( $this->a1 ), wp_list_pluck( $notifications, 'item_id' ) );
+		$this->assertEquals( 1, bp_get_total_mention_count_for_user( $this->u1 ) );
+
+		// Clear notifications for $this->u1
+		bp_activity_clear_new_mentions( $this->u1 );
+
+		$notifications = BP_Notifications_Notification::get( array(
+			'item_id' => $this->a1,
+		) );
+
+		$this->assertEmpty( $notifications, 'Notifications should be cleared when new mention metas are removed' );
+		$this->assertEmpty( bp_get_total_mention_count_for_user( $this->u1 ) );
+	}
+
+	/**
 	 * Creates two notifications for $u1, one of which is for mentions
 	 */
 	protected function create_notifications() {
