diff --git a/src/p_map.c b/src/p_map.c
index ddb35bd1c3017926899823515fc9db00296e3f82..d06a8b73738b2f96ee6a106ecac5aa02667f7efc 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -1616,7 +1616,7 @@ boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam)
 
 						po->validcount = validcount;
 
-						if (!P_PointInsidePolyobj(po, x, y))
+						if (!P_PointInsidePolyobj(po, x, y) || !(po->flags & POF_SOLID))
 						{
 							plink = (polymaplink_t *)(plink->link.next);
 							continue;
diff --git a/src/p_user.c b/src/p_user.c
index 518321197a3a22275da3d36ec68a2376ad33181d..efc58ac7cce974abbe3b6c732cc3ad69dcfc67e2 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -8163,7 +8163,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 
 						po->validcount = validcount;
 
-						if (!P_PointInsidePolyobj(po, x, y))
+						if (!P_PointInsidePolyobj(po, x, y) || !(po->flags & POF_SOLID))
 						{
 							plink = (polymaplink_t *)(plink->link.next);
 							continue;