diff --git src/bp-messages/bp-messages-star.php src/bp-messages/bp-messages-star.php
index 08e4143..59d662e 100644
--- src/bp-messages/bp-messages-star.php
+++ src/bp-messages/bp-messages-star.php
@@ -350,7 +350,7 @@ function bp_messages_star_content() {
  * @return array
  */
 function bp_messages_filter_starred_message_threads( $r = array() ) {
-	$r['user_id'] = 0;
+	$r['box'] = 'starred';
 	$r['meta_query'] = array( array(
 		'key'   => 'starred_by_user',
 		'value' => bp_loggedin_user_id()
diff --git src/bp-messages/classes/class-bp-messages-thread.php src/bp-messages/classes/class-bp-messages-thread.php
index f7e81f3..617c24c 100644
--- src/bp-messages/classes/class-bp-messages-thread.php
+++ src/bp-messages/classes/class-bp-messages-thread.php
@@ -460,13 +460,26 @@ class BP_Messages_Thread {
 			$search_sql        = $wpdb->prepare( "AND ( subject LIKE %s OR message LIKE %s )", $search_terms_like, $search_terms_like );
 		}
 
+		// Default deleted SQL
+		$deleted_sql = 'r.is_deleted = 0';
+
+		// Set up SQL statements depending on message box type and user ID
 		if ( ! empty( $r['user_id'] ) ) {
-			if ( 'sentbox' == $r['box'] ) {
-				$user_id_sql = 'AND ' . $wpdb->prepare( 'm.sender_id = %d', $r['user_id'] );
-				$sender_sql  = ' AND m.sender_id = r.user_id';
-			} else {
-				$user_id_sql = 'AND ' . $wpdb->prepare( 'r.user_id = %d', $r['user_id'] );
-				$sender_sql  = ' AND r.sender_only = 0';
+			switch ( $r['box'] ) {
+				case 'sentbox' :
+					$user_id_sql = 'AND ' . $wpdb->prepare( 'm.sender_id = %d', $r['user_id'] );
+					$sender_sql  = ' AND m.sender_id = r.user_id';
+					break;
+
+				case 'inbox' :
+					$user_id_sql = 'AND ' . $wpdb->prepare( 'r.user_id = %d', $r['user_id'] );
+					$sender_sql  = ' AND r.sender_only = 0';
+					break;
+
+				default :
+					// Omit user-deleted threads from all other custom message boxes
+					$deleted_sql = $wpdb->prepare( '( r.user_id = %d AND r.is_deleted = 0 )', $r['user_id'] );
+					break;
 			}
 		}
 
@@ -485,7 +498,7 @@ class BP_Messages_Thread {
 		$sql = array();
 		$sql['select'] = 'SELECT m.thread_id, MAX(m.date_sent) AS date_sent';
 		$sql['from']   = "FROM {$bp->messages->table_name_recipients} r INNER JOIN {$bp->messages->table_name_messages} m ON m.thread_id = r.thread_id {$meta_query_sql['join']}";
-		$sql['where']  = "WHERE r.is_deleted = 0 {$user_id_sql} {$sender_sql} {$type_sql} {$search_sql} {$meta_query_sql['where']}";
+		$sql['where']  = "WHERE {$deleted_sql} {$user_id_sql} {$sender_sql} {$type_sql} {$search_sql} {$meta_query_sql['where']}";
 		$sql['misc']   = "GROUP BY m.thread_id ORDER BY date_sent DESC {$pag_sql}";
 
 		// get thread IDs
diff --git tests/phpunit/testcases/messages/star.php tests/phpunit/testcases/messages/star.php
index 476fecc..5b1bfba 100644
--- tests/phpunit/testcases/messages/star.php
+++ tests/phpunit/testcases/messages/star.php
@@ -107,6 +107,68 @@ class BP_Tests_Messages_Star_ extends BP_UnitTestCase {
 	}
 
 	/**
+	 * @group bp_messages_filter_starred_message_threads
+	 */
+	public function test_get_starred_threads_without_deleted_thread() {
+		$old_current_user = get_current_user_id();
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+
+		// create three threads
+		$t1 = $this->factory->message->create( array(
+			'sender_id'  => $u1,
+			'recipients' => array( $u2 ),
+			'subject'    => 'A',
+		) );
+		$t2 = $this->factory->message->create( array(
+			'sender_id'  => $u1,
+			'recipients' => array( $u2 ),
+			'subject'    => 'B',
+		) );
+		$t3 = $this->factory->message->create( array(
+			'sender_id'  => $u1,
+			'recipients' => array( $u2 ),
+			'subject'    => 'C',
+		) );
+
+		// grab the message ids as individual variables
+		list( $m1 ) = $this->get_message_ids( $t1 );
+		list( $m2 ) = $this->get_message_ids( $t2 );
+		list( $m3 ) = $this->get_message_ids( $t3 );
+
+		// star all threads
+		bp_messages_star_set_action( array(
+			'user_id'    => $u2,
+			'message_id' => $m1,
+		) );
+		bp_messages_star_set_action( array(
+			'user_id'    => $u2,
+			'message_id' => $m2,
+		) );
+		bp_messages_star_set_action( array(
+			'user_id'    => $u2,
+			'message_id' => $m3,
+		) );
+
+		// delete the second thread
+		$this->set_current_user( $u2 );
+		messages_delete_thread( $t2 );
+
+		// load the starred threads loop
+		global $messages_template;
+		add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
+		bp_has_message_threads();
+		remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
+
+		// assert that second thread isn't in starred thread loop
+		$thread_ids = wp_list_pluck( $messages_template->threads, 'thread_id' );
+		$this->assertFalse( in_array( $t2, $thread_ids ) );
+
+		// reset
+		$this->set_current_user( $old_current_user );
+	}
+
+	/**
 	 * Helper method to grab the message IDs from a message thread.
 	 *
 	 * @param int $thread_id The message thread ID
