diff --git a/lib/veritas/relation.rb b/lib/veritas/relation.rb
index <HASH>..<HASH> 100644
--- a/lib/veritas/relation.rb
+++ b/lib/veritas/relation.rb
@@ -122,11 +122,11 @@ module Veritas
     def eql?(other)
       instance_of?(other.class) &&
       header.eql?(other.header) &&
-      to_set.eql?(project_relation(other).to_set)
+      to_set == project_relation(other).to_set
     end
 
     def hash
-      header.hash ^ to_set.hash
+      header.hash ^ to_a.hash
     end
 
   private
diff --git a/spec/unit/veritas/relation/hash_spec.rb b/spec/unit/veritas/relation/hash_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/unit/veritas/relation/hash_spec.rb
+++ b/spec/unit/veritas/relation/hash_spec.rb
@@ -9,5 +9,5 @@ describe 'Veritas::Relation#hash' do
 
   it { should be_kind_of(Integer) }
 
-  it { should == @relation.header.hash ^ [].hash }
+  it { should == @relation.header.hash ^ @relation.to_a.hash }
 end
Fixed failing specs in <I>

* This is due to differences in Set#eql? and Set#hash on <I> and
  below, which are caused by broken behaviour in the corresponding
  Hash methods.

  A ticket was raised with the backports project in case it is possible
  to fix this, so this commit can be reverted:

    <URL>