diff --git a/src/common/game_state/cards/deck.cpp b/src/common/game_state/cards/deck.cpp
index b00e371c35f7578b95c742ae14c99adc11a16b48..70f40b7eaa6e9be515ec9b18be83491d59c6996d 100644
--- a/src/common/game_state/cards/deck.cpp
+++ b/src/common/game_state/cards/deck.cpp
@@ -89,7 +89,12 @@ unsigned int deck::get_number_of_remaining_cards() const noexcept
 // state update functions
 void deck::setup_round()
 {
-    _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));
+    }
 }
 
 bool deck::draw_cards(const player* player, const int round_number, std::string& err)