diff --git a/src/menu/menu.cpp b/src/menu/menu.cpp
index 676057321..a8dac6b54 100644
--- a/src/menu/menu.cpp
+++ b/src/menu/menu.cpp
@@ -270,6 +270,7 @@ bool DMenu::CallMenuEvent(int mkey, bool fromcontroller)
 
 void DMenu::Close ()
 {
+	if (DMenu::CurrentMenu == nullptr) return;	// double closing can happen in the save menu.
 	assert(DMenu::CurrentMenu == this);
 	DMenu::CurrentMenu = mParentMenu;
 	Destroy();
diff --git a/wadsrc/static/zscript/inventory/powerups.txt b/wadsrc/static/zscript/inventory/powerups.txt
index d355a5e14..828113ac8 100644
--- a/wadsrc/static/zscript/inventory/powerups.txt
+++ b/wadsrc/static/zscript/inventory/powerups.txt
@@ -1767,7 +1767,7 @@ class PowerProtection : Powerup
 	{
 		if (passive && damage > 0)
 		{
-			newdamage = max(1, ApplyDamageFactors(GetClass(), damageType, damage, damage / 4));
+			newdamage = max(0, ApplyDamageFactors(GetClass(), damageType, damage, damage / 4));
 			if (Owner != null && newdamage < damage) Owner.A_PlaySound(ActiveSound, CHAN_AUTO, 1.0, false, ATTN_NONE);
 		}
 	}