diff --git a/src/info.c b/src/info.c
index 9f8c2b8115169d5da5ce4e98f4ec12bba22966ae..8dd1aac80679d17ae21b0fe43ad6b042d35ed627 100644
--- a/src/info.c
+++ b/src/info.c
@@ -648,13 +648,13 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
 
 	0, // SPR2_TRNS,
 
-	FF_SPR2SUPER|SPR2_STND, // SPR2_NSTD,
-	FF_SPR2SUPER|SPR2_FALL, // SPR2_NFLT,
+	SPR2_STND, // SPR2_NSTD,
+	SPR2_FALL, // SPR2_NFLT,
 	0, // SPR2_NFLY, (will never be referenced unless skin 0 lacks this)
 	SPR2_NFLY, // SPR2_NDRL,
-	FF_SPR2SUPER|SPR2_STUN, // SPR2_NSTN,
+	SPR2_STUN, // SPR2_NSTN,
 	SPR2_NSTN, // SPR2_NPUL,
-	FF_SPR2SUPER|SPR2_ROLL, // SPR2_NATK,
+	SPR2_ROLL, // SPR2_NATK,
 
 	0, // SPR2_TAL0, (this will look mighty stupid but oh well)
 	SPR2_TAL0, // SPR2_TAL1,
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 8bc6abc54c63d47456269f23d8224c1f3fd3814f..715e8797427a3fe155fe6a107dda0735f923b3f0 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -402,9 +402,9 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 				UINT16 stateframe = st->frame;
 
 				// Add/Remove FF_SPR2SUPER based on certain conditions
-				if (player->charflags & SF_NOSUPERSPRITES)
+				if (player->charflags & SF_NOSUPERSPRITES || (player->powers[pw_carry] == CR_NIGHTSMODE && (player->charflags & SF_NONIGHTSSUPER)))
 					stateframe = stateframe & ~FF_SPR2SUPER;
-				else if (player->powers[pw_super])
+				else if (player->powers[pw_super] || (player->powers[pw_carry] == CR_NIGHTSMODE && (player->charflags & SF_SUPER)))
 					stateframe = stateframe | FF_SPR2SUPER;
 
 				if (stateframe & FF_SPR2SUPER)
diff --git a/src/p_user.c b/src/p_user.c
index a6d12fcd4234570dc88877dd08eef01f70afe00a..49b4b2c94468c332016dd9125298dff1b41ebc7c 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -13199,7 +13199,7 @@ void P_ForceLocalAngle(player_t *player, angle_t angle)
 boolean P_PlayerFullbright(player_t *player)
 {
 	return (player->powers[pw_super]
-		|| ((player->powers[pw_carry] == CR_NIGHTSMODE && (((skin_t *)player->mo->skin)->flags & (SF_SUPER|SF_NONIGHTSSUPER)) == SF_SUPER) // Super colours? Super bright!
+		|| ((player->powers[pw_carry] == CR_NIGHTSMODE && (player->charflags & (SF_SUPER|SF_NONIGHTSSUPER)) == SF_SUPER) // Super colours? Super bright!
 		&& (player->exiting
 			|| !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
 			&& player->mo->state < &states[S_PLAY_NIGHTS_TRANS6])))); // Note the < instead of <=