diff --git a/src/common/game_state/cards/deck.cpp b/src/common/game_state/cards/deck.cpp
index 8028b52dcd4d86dca58336793fd499c6d5386327..b00e371c35f7578b95c742ae14c99adc11a16b48 100644
--- a/src/common/game_state/cards/deck.cpp
+++ b/src/common/game_state/cards/deck.cpp
@@ -52,7 +52,12 @@ deck::deck() : unique_serializable()
         _all_cards.push_back(new card(0, 0));
     }
 
-    _remaining_cards = _all_cards;
+    // make a copy of _all_cards
+    _remaining_cards = std::vector<card*>();
+    for (card* & c : _all_cards)
+    {
+        _remaining_cards.push_back(new card(*c));
+    }
 }
 
 deck::~deck() {