Index: src/bp-activity/bp-activity-functions.php
===================================================================
--- src/bp-activity/bp-activity-functions.php
+++ src/bp-activity/bp-activity-functions.php
@@ -3030,7 +3030,7 @@
 		$link = $activity_obj->primary_link;
 	} else {
 		if ( 'activity_comment' == $activity_obj->type ) {
-			$link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->item_id . '/';
+			$link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->item_id . '/#acomment-' . $activity_obj->id;
 		} else {
 			$link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->id . '/';
 		}
Index: src/bp-activity/bp-activity-notifications.php
===================================================================
--- src/bp-activity/bp-activity-notifications.php
+++ src/bp-activity/bp-activity-notifications.php
@@ -242,8 +242,14 @@
 				$text   = sprintf( __( 'You have %1$d new replies', 'buddypress' ), (int) $total_items );
 				$amount = 'multiple';
 			} else {
-				$link   = bp_activity_get_permalink( $activity_id );
-				$text   =  sprintf( __( '%1$s commented on one of your updates', 'buddypress' ), $user_fullname );
+				$link = add_query_arg(
+					array(
+						'aid' => $activity_id,
+						'n'   => 'update_reply'
+					),
+					bp_activity_get_permalink( $activity_id )
+				);
+				$text =  sprintf( __( '%1$s commented on one of your updates', 'buddypress' ), $user_fullname );
 			}
 		break;
 
@@ -257,8 +263,14 @@
 				$text   = sprintf( __( 'You have %1$d new comment replies', 'buddypress' ), (int) $total_items );
 				$amount = 'multiple';
 			} else {
-				$link   = bp_activity_get_permalink( $activity_id );
-				$text   =  sprintf( __( '%1$s replied to one your activity comments', 'buddypress' ), $user_fullname );
+				$link = add_query_arg(
+					array(
+						'aid' => $activity_id,
+						'n'   => 'comment_reply'
+					),
+					bp_activity_get_permalink( $activity_id )
+				);
+				$text =  sprintf( __( '%1$s replied to one your activity comments', 'buddypress' ), $user_fullname );
 			}
 		break;
 	}
@@ -365,7 +377,7 @@
 	if ( bp_is_active( 'notifications' ) ) {
 		bp_notifications_add_notification( array(
 			'user_id'           => $activity->user_id,
-			'item_id'           => $activity->id,
+			'item_id'           => $comment_id,
 			'secondary_item_id' => $commenter_id,
 			'component_name'    => buddypress()->activity->id,
 			'component_action'  => 'update_reply',
@@ -389,7 +401,7 @@
 	if ( bp_is_active( 'notifications' ) ) {
 		bp_notifications_add_notification( array(
 			'user_id'           => $activity_comment->user_id,
-			'item_id'           => $activity_comment->item_id,
+			'item_id'           => $comment_id,
 			'secondary_item_id' => $commenter_id,
 			'component_name'    => buddypress()->activity->id,
 			'component_action'  => 'comment_reply',
@@ -426,7 +438,6 @@
  * Mark at-mention notification as read when user visits the activity with the mention.
  *
  * @since 2.0.0
- * @since 2.6.0 Mark notifications for 'update_reply' and 'comment_reply' actions
  *
  * @param BP_Activity_Activity $activity Activity object.
  */
@@ -439,31 +450,29 @@
 		return;
 	}
 
-	/**
-	 * Filter here to add the notification actions to mark as read
-	 * when the single activity is displayed.
-	 *
-	 * @since 2.6.0
-	 *
-	 * @param array $value List of notification actions to mark as read.
-	 */
-	$notification_actions = apply_filters( 'bp_activity_notification_actions_single_activity', array(
-		'new_at_mention',
-		'update_reply',
-		'comment_reply',
-	) );
-
-	$user_id   = bp_loggedin_user_id();
-	$component = buddypress()->activity->id;
-
-	foreach ( $notification_actions as $action ) {
-		// Mark as read any notifications for the current user related to this activity item.
-		bp_notifications_mark_notifications_by_item_id( $user_id, $activity->id, $component, $action );
-	}
+	// Mark as read any notifications for the current user related to this activity item.
+	bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), $activity->id, buddypress()->activity->id, 'new_at_mention' );
 }
 add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_screen_notifications_single_activity_permalink' );
 
 /**
+ * Mark non-mention notifications as read when user visits our read permalink.
+ *
+ * In particular, 'update_reply' and 'comment_reply' notifications are handled
+ * here. See {@link bp_activity_format_notifications()} for more info.
+ *
+ * @since 2.6.0
+ */
+function bp_activity_remove_screen_notifications_for_non_mentions() {
+	if ( false === bp_is_active( 'notifications' ) || false === is_singular() || false === is_user_logged_in() || empty( $_GET['aid'] ) || empty( $_GET['n'] ) ) {
+		return;
+	}
+
+	bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), $_GET['aid'], buddypress()->activity->id, $_GET['n'] );
+}
+add_action( 'bp_screens', 'bp_activity_remove_screen_notifications_for_non_mentions' );
+
+/**
  * Delete at-mention notifications when the corresponding activity item is deleted.
  *
  * @since 2.0.0
Index: src/bp-activity/bp-activity-template.php
===================================================================
--- src/bp-activity/bp-activity-template.php
+++ src/bp-activity/bp-activity-template.php
@@ -2420,25 +2420,18 @@
 	 *
 	 * @since 1.8.0
 	 *
-	 *
 	 * @return string $link The activity comment permalink.
 	 */
 	function bp_get_activity_comment_permalink() {
 		global $activities_template;
 
-		// Check that comment exists.
+		$link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity );
+
+		// Used for filter below.
 		$comment_id = isset( $activities_template->activity->current_comment->id )
 			? $activities_template->activity->current_comment->id
 			: 0;
 
-		// Setup the comment link.
-		$comment_link = ! empty( $comment_id )
-			? '#acomment-' .$comment_id
-			: false;
-
-		// Append comment ID to end of activity permalink.
-		$link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ) . $comment_link;
-
 		/**
 		 * Filters the activity comment permalink.
 		 *
