diff --git a/src/r_main.c b/src/r_main.c
index 8729b5dcb36ccedb8aed999dbf3afcb60e0faf04..0d6a74a3b07d71b355f9417bdb57631b2576cb8c 100644
--- a/src/r_main.c
+++ b/src/r_main.c
@@ -1450,7 +1450,7 @@ static void Mask_Post (maskcount_t* m)
 
 void R_RenderPlayerView(player_t *player)
 {
-	UINT8			nummasks	= 1;
+	INT32			nummasks	= 1;
 	maskcount_t*	masks		= malloc(sizeof(maskcount_t));
 
 	if (cv_homremoval.value && player == &players[displayplayer]) // if this is display player 1
diff --git a/src/r_portal.c b/src/r_portal.c
index 3026f4e4c0a99ea9cde1503eb90952e06b49a26b..cba98db051eed2a7b6830761771b561b3ce7fdee 100644
--- a/src/r_portal.c
+++ b/src/r_portal.c
@@ -132,6 +132,7 @@ static portal_t* Portal_Add (const INT16 x1, const INT16 x2)
 
 void Portal_Remove (portal_t* portal)
 {
+	portalcullsector = NULL;
 	portal_base = portal->next;
 	Z_Free(portal->ceilingclip);
 	Z_Free(portal->floorclip);
diff --git a/src/r_things.c b/src/r_things.c
index bc93f2637fe757cf0a45aa081b56558f084dc2f4..34a2dd33616d7092b853a61f0c3ee6065be47c07 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -3186,10 +3186,10 @@ static void R_DrawMaskedList (drawnode_t* head)
 	}
 }
 
-void R_DrawMasked(maskcount_t* masks, UINT8 nummasks)
+void R_DrawMasked(maskcount_t* masks, INT32 nummasks)
 {
 	drawnode_t *heads;	/**< Drawnode lists; as many as number of views/portals. */
-	SINT8 i;
+	INT32 i;
 
 	heads = calloc(nummasks, sizeof(drawnode_t));
 
diff --git a/src/r_things.h b/src/r_things.h
index b1ff32b1ee4a3e723bb020f27a397c71e3f91297..b4676fbbd08aea02d3459eaaf41577571b4c88cb 100644
--- a/src/r_things.h
+++ b/src/r_things.h
@@ -100,7 +100,7 @@ typedef struct
 	sector_t* viewsector;
 } maskcount_t;
 
-void R_DrawMasked(maskcount_t* masks, UINT8 nummasks);
+void R_DrawMasked(maskcount_t* masks, INT32 nummasks);
 
 // ----------
 // VISSPRITES