diff --git src/bp-messages/classes/class-bp-messages-thread.php src/bp-messages/classes/class-bp-messages-thread.php
index 4032bd6bd..0376074c5 100644
--- src/bp-messages/classes/class-bp-messages-thread.php
+++ src/bp-messages/classes/class-bp-messages-thread.php
@@ -200,14 +200,9 @@ class BP_Messages_Thread {
 			$this->sender_ids[ $message->sender_id ] = $message->sender_id;
 		}
 
-		// Fetch the recipients.
+		// Fetch the recipients and set the displayed/logged in user's unread count.
 		$this->recipients = $this->get_recipients( $thread_id, $r );
 
-		// Get the unread count for the user.
-		if ( isset( $this->recipients[ $r['user_id'] ] ) ) {
-			$this->unread_count = $this->recipients[ $r['user_id'] ]->unread_count;
-		}
-
 		// Grab all message meta.
 		if ( true === (bool) $r['update_meta_cache'] ) {
 			bp_messages_update_meta_cache( wp_list_pluck( $this->messages, 'id' ) );
@@ -311,10 +306,15 @@ class BP_Messages_Thread {
 			wp_cache_set( 'thread_recipients_' . $thread_id, (array) $recipients, 'bp_messages' );
 		}
 
+		// Set the unread count for the user.
+		if ( isset( $r['user_id'] ) && $r['user_id'] && isset( $recipients[ $r['user_id'] ]->unread_count ) ) {
+			$this->unread_count = (int) $recipients[ $r['user_id'] ]->unread_count;
+		}
+
 		// Paginate the results.
 		if ( ! empty( $recipients ) && $r['recipients_per_page'] && $r['recipients_page'] ) {
 			$start      = ( $r['recipients_page'] - 1 ) * ( $r['recipients_per_page'] );
-			$recipients = array_slice( $recipients, $start, $r['recipients_per_page'] );
+			$recipients = array_slice( $recipients, $start, $r['recipients_per_page'], true );
 		}
 
 		/**
diff --git tests/phpunit/testcases/messages/template.php tests/phpunit/testcases/messages/template.php
index cd405ffb3..a2640848b 100644
--- tests/phpunit/testcases/messages/template.php
+++ tests/phpunit/testcases/messages/template.php
@@ -424,4 +424,56 @@ class BP_Tests_Messages_Template extends BP_UnitTestCase {
 		$this->assertNotCount( 2, $messages_template->threads[0]->recipients );
 		$this->assertCount( 1, $messages_template->threads[0]->recipients );
 	}
+
+	/**
+	 * @group pagination
+	 * @group BP_Messages_Box_Template
+	 * @group BP8750
+	 */
+	public function test_thread_unread_count_setting_per_page_recipients() {
+		$u1 = self::factory()->user->create();
+		$u2 = self::factory()->user->create();
+
+		// create initial thread
+		$message_1 = self::factory()->message->create_and_get(
+			array(
+				'sender_id'  => $u1,
+				'recipients' => array( $u2 ),
+			)
+		);
+
+		// create some replies to thread
+		self::factory()->message->create_and_get(
+			array(
+				'thread_id'  => $message_1->thread_id,
+				'sender_id'  => $u2,
+				'recipients' => array( $u1 ),
+			)
+		);
+
+		self::factory()->message->create_and_get(
+			array(
+				'thread_id'  => $message_1->thread_id,
+				'sender_id'  => $u2,
+				'recipients' => array( $u1 ),
+			)
+		);
+
+		// set user to anonymous
+		$old_current_user = get_current_user_id();
+		$this->set_current_user( $u1 );
+
+		$messages_template = new BP_Messages_Box_Template(
+			array(
+				'recipients_page'     => 1,
+				'recipients_per_page' => 1,
+			)
+		);
+
+		$this->set_current_user( $old_current_user );
+
+		$thread = reset( $messages_template->threads );
+
+		$this->assertEquals( 2, $thread->unread_count );
+	}
 }
