diff --git a/src/server.cpp b/src/server.cpp
index f6faccb1f2f455287577e3b4c4a2dd2043def6a2..86096055d1f5e9fd1114dc69686522f81be31b53 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -3034,7 +3034,8 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask)
 		return false;
 
 	SendHUDSetFlags(player->peer_id, flags, mask);
-	player->hud_flags = flags;
+	player->hud_flags &= ~mask;
+	player->hud_flags |= flags;
 
 	PlayerSAO* playersao = player->getPlayerSAO();