diff --git a/app/lib/account_statuses_filter.rb b/app/lib/account_statuses_filter.rb
index a5aca9660..b34ebb477 100644
--- a/app/lib/account_statuses_filter.rb
+++ b/app/lib/account_statuses_filter.rb
@@ -60,8 +60,12 @@ class AccountStatusesFilter
       .where(reblog_of_id: nil)
       .or(
         scope
+          # This is basically `Status.not_domain_blocked_by_account(current_account)`
+          # and `Status.not_excluded_by_account(current_account)` but on the
+          # `reblog` association. Unfortunately, there seem to be no clean way
+          # to re-use those scopes in our case.
+          .where(reblog: { accounts: { domain: nil } }).or(scope.where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } }))
           .where.not(reblog: { account_id: current_account.excluded_from_timeline_account_ids })
-          .where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } })
       )
   end
 
diff --git a/spec/models/account_statuses_filter_spec.rb b/spec/lib/account_statuses_filter_spec.rb
similarity index 91%
rename from spec/models/account_statuses_filter_spec.rb
rename to spec/lib/account_statuses_filter_spec.rb
index 0cf6453fe..c821eb4ba 100644
--- a/spec/models/account_statuses_filter_spec.rb
+++ b/spec/lib/account_statuses_filter_spec.rb
@@ -202,7 +202,7 @@ RSpec.describe AccountStatusesFilter do
       context 'when blocking a reblogged domain' do
         let(:other_account) { Fabricate(:account, domain: 'example.com') }
         let(:reblogging_status) { Fabricate(:status, account: other_account) }
-        let(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
+        let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
 
         before do
           current_account.block_domain!(other_account.domain)
@@ -213,6 +213,20 @@ RSpec.describe AccountStatusesFilter do
         end
       end
 
+      context 'when blocking an unrelated domain' do
+        let(:other_account) { Fabricate(:account, domain: nil) }
+        let(:reblogging_status) { Fabricate(:status, account: other_account, visibility: 'public') }
+        let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
+
+        before do
+          current_account.block_domain!('example.com')
+        end
+
+        it 'returns the reblog from the non-blocked domain' do
+          expect(subject.results.pluck(:id)).to include(reblog.id)
+        end
+      end
+
       context 'when muting a reblogged account' do
         let(:reblog) { status_with_reblog!('public') }