diff --git a/code/cgame/cg_event.c b/code/cgame/cg_event.c
index 012b9f920..d675704ce 100644
--- a/code/cgame/cg_event.c
+++ b/code/cgame/cg_event.c
@@ -156,34 +156,28 @@ static void CG_Obituary(entityState_t *ent) {
 		gender = ci->gender;
 		switch (mod) {
 		case MOD_BALLOONY_SPLASH:
-			if (gender == GENDER_MALE)
-				message = "tripped on his own water bomb";
-			else if (gender == GENDER_FEMALE)
+			if (gender == GENDER_FEMALE)
 				message = "tripped on her own water bomb";
 			else if (gender == GENDER_NEUTER)
 				message = "tripped on its own water bomb";
 			else
-				message = "tripped on their own water bomb";
+				message = "tripped on his own water bomb";
 			break;
 		case MOD_BETTY_SPLASH:
-			if (gender == GENDER_MALE)
-				message = "blew himself up";
-			else if (gender == GENDER_FEMALE)
+			if (gender == GENDER_FEMALE)
 				message = "blew herself up";
 			else if (gender == GENDER_NEUTER)
 				message = "blew itself up";
 			else
-				message = "blew themselves up";
+				message = "blew himself up";
 			break;
 		case MOD_BUBBLEG_SPLASH:
-			if (gender == GENDER_MALE)
-				message = "melted himself";
-			else if (gender == GENDER_FEMALE)
+			if (gender == GENDER_FEMALE)
 				message = "melted herself";
 			else if (gender == GENDER_NEUTER)
 				message = "melted itself";
 			else
-				message = "melted themselves";
+				message = "melted himself";
 			break;
 		case MOD_IMPERIUS_SPLASH:
 			message = "should have used a smaller gun";
@@ -205,19 +199,19 @@ static void CG_Obituary(entityState_t *ent) {
 
 		if (cgs.gametype < GT_TEAM) {
 			if (cgs.gametype == GT_LPS) {
-				const char *gender_strings[] = {"they have", "he has", "she has", "it has", NULL};
+				const char *gender_strings[] = {"he", "she", "it", NULL};
 				CASSERT(ARRAY_LEN(gender_strings) == GENDER_MAX + 1);
 
 				gender = ci->gender;
-				if (gender >= GENDER_MAX || gender < GENDER_NONE)
-					gender = GENDER_NONE;
+				if (gender >= GENDER_MAX || gender < GENDER_MALE)
+					gender = GENDER_NEUTER;
 
 				if (ent->generic1 == 0)
-					s = va("You fragged %s,\n%s no lives left.", targetName, gender_strings[gender]);
+					s = va("You fragged %s\n%s has no lives left.", targetName, gender_strings[gender]);
 				else if (ent->generic1 == 1)
-					s = va("You fragged %s,\n%s 1 life left.", targetName, gender_strings[gender]);
+					s = va("You fragged %s\n%s has 1 life left.", targetName, gender_strings[gender]);
 				else
-					s = va("You fragged %s,\n%s %i lives left.", targetName, gender_strings[gender], ent->generic1);
+					s = va("You fragged %s\n%s has %i lives left.", targetName, gender_strings[gender], ent->generic1);
 			} else
 				s = va("You fragged %s\n%s place with %i", targetName,
 					   CG_PlaceString(cg.snap->ps.persistant[PERS_RANK] + 1), cg.snap->ps.persistant[PERS_SCORE]);
diff --git a/code/cgame/cg_local.h b/code/cgame/cg_local.h
index 03a55a6dc..2de98c851 100644
--- a/code/cgame/cg_local.h
+++ b/code/cgame/cg_local.h
@@ -371,8 +371,7 @@ typedef struct {
 	float headScale;
 
 	footstep_t footsteps;
-	gender_t gender;	  // user settings (can also be from model)
-	gender_t genderModel; // cached value from model (animation.cfg)
+	gender_t gender; // from model
 
 	qhandle_t legsModel;
 	qhandle_t legsSkin;
diff --git a/code/cgame/cg_players.c b/code/cgame/cg_players.c
index e935019e1..9b68b6d5c 100644
--- a/code/cgame/cg_players.c
+++ b/code/cgame/cg_players.c
@@ -108,6 +108,7 @@ static qboolean CG_ParseAnimationFile(const char *filename, clientInfo_t *ci) {
 	ci->footsteps = FOOTSTEP_NORMAL;
 	VectorClear(ci->headOffset);
 	ci->headScale = 1.0f;
+	ci->gender = GENDER_MALE;
 	ci->fixedlegs = qfalse;
 	ci->fixedtorso = qfalse;
 
@@ -166,15 +167,14 @@ static qboolean CG_ParseAnimationFile(const char *filename, clientInfo_t *ci) {
 		} else if (!Q_stricmp(token, "sex")) {
 			token = COM_Parse(&text_p);
 			if (!token[0]) {
-				ci->genderModel = GENDER_NONE;
 				break;
 			}
-			if (token[0] == 'm' || token[0] == 'M') {
-				ci->genderModel = GENDER_MALE;
-			} else if (token[0] == 'f' || token[0] == 'F') {
-				ci->genderModel = GENDER_FEMALE;
+			if (token[0] == 'f' || token[0] == 'F') {
+				ci->gender = GENDER_FEMALE;
 			} else if (token[0] == 'n' || token[0] == 'N') {
-				ci->genderModel = GENDER_NEUTER;
+				ci->gender = GENDER_NEUTER;
+			} else {
+				ci->gender = GENDER_MALE;
 			}
 			continue;
 		} else if (!Q_stricmp(token, "fixedlegs")) {
@@ -195,6 +195,7 @@ static qboolean CG_ParseAnimationFile(const char *filename, clientInfo_t *ci) {
 
 	// read information for each frame
 	for (i = 0; i < MAX_ANIMATIONS; i++) {
+
 		token = COM_Parse(&text_p);
 		if (!token[0]) {
 			if (i >= TORSO_GETFLAG && i <= TORSO_NEGATIVE) {
@@ -667,21 +668,18 @@ static void CG_LoadClientInfo(int clientNum, clientInfo_t *ci) {
 			CG_ResetPlayerEntity(&cg_entities[i]);
 		}
 	}
-
-	if (ci->gender == GENDER_MAX) {
-		ci->gender = ci->genderModel;
-	}
 }
 
-/**
- * @brief Copies the attributes of a model from its @c animation.cfg properties to the new @c clientInfo_t
- * @sa CG_ParseAnimationFile()
- */
+/*
+======================
+CG_CopyClientInfoModel
+======================
+*/
 static void CG_CopyClientInfoModel(const clientInfo_t *from, clientInfo_t *to) {
 	VectorCopy(from->headOffset, to->headOffset);
 	to->headScale = from->headScale;
 	to->footsteps = from->footsteps;
-	to->genderModel = from->genderModel;
+	to->gender = from->gender;
 
 	to->legsModel = from->legsModel;
 	to->legsSkin = from->legsSkin;
@@ -801,9 +799,11 @@ static void CG_SetDeferredClientInfo(int clientNum, clientInfo_t *ci) {
 	CG_LoadClientInfo(clientNum, ci);
 }
 
-/**
- * @sa ClientUserinfoChanged()
- */
+/*
+======================
+CG_NewClientInfo
+======================
+*/
 void CG_NewClientInfo(int clientNum) {
 	clientInfo_t *ci;
 	clientInfo_t newInfo;
@@ -883,17 +883,6 @@ void CG_NewClientInfo(int clientNum) {
 	// team leader
 	v = Info_ValueForKey(configstring, "tl");
 	newInfo.teamLeader = atoi(v);
-
-	// sex
-	// if a sex option is set in the userinfo string we take this,
-	// otherwise we check for GENDER_MAX in CG_ParseAnimationFile() to use the
-	// setting from animation.cfg
-	newInfo.gender = GENDER_MAX;
-	v = Info_ValueForKey(configstring, "s");
-	if (v[0] != '\0') {
-		newInfo.gender = atoi(v);
-	}
-
 	oldTeam = ci->team;
 
 	// this may be run before the first snapshot arrives
@@ -1002,7 +991,6 @@ void CG_NewClientInfo(int clientNum) {
 
 	// replace whatever was there with the new one
 	newInfo.infoValid = qtrue;
-
 	*ci = newInfo;
 
 	// if the local client changed teams in a team gametype, adjust team- and enemymodels
diff --git a/code/client/cl_main.c b/code/client/cl_main.c
index 89beaf80f..04cd1faab 100644
--- a/code/client/cl_main.c
+++ b/code/client/cl_main.c
@@ -3400,7 +3400,7 @@ void CL_Init(void) {
 	Cvar_Get("spraycolor", "2", CVAR_USERINFO | CVAR_ARCHIVE);
 	Cvar_Get("randomcolor", "0", CVAR_USERINFO | CVAR_ARCHIVE);
 	Cvar_Get("handicap", "100", CVAR_USERINFO | CVAR_ARCHIVE);
-	Cvar_Get("sex", "model", CVAR_USERINFO | CVAR_ARCHIVE);
+	Cvar_Get("sex", "male", CVAR_USERINFO | CVAR_ARCHIVE);
 
 	Cvar_Get("password", "", CVAR_USERINFO);
 	Cvar_Get("cg_predictItems", "1", CVAR_USERINFO | CVAR_ARCHIVE);
diff --git a/code/game/bg_public.h b/code/game/bg_public.h
index e231b31fc..3f0f818e7 100644
--- a/code/game/bg_public.h
+++ b/code/game/bg_public.h
@@ -160,7 +160,7 @@ typedef enum {
 
 int convertGTStringToGTNumber(const char *argStr);
 
-typedef enum { GENDER_NONE, GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER, GENDER_MAX } gender_t;
+typedef enum { GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER, GENDER_MAX } gender_t;
 
 /*
 ===================================================================================
diff --git a/code/game/g_client.c b/code/game/g_client.c
index 10a8fcd56..3d0762bd2 100644
--- a/code/game/g_client.c
+++ b/code/game/g_client.c
@@ -741,15 +741,17 @@ static void ClientCleanName(const char *in, char *out, int outSize) {
 		Q_strncpyz(out, "UnnamedPlayer", outSize);
 }
 
-/**
- * Called from ClientConnect when the player first connects and
- * directly by the server system when the player updates a userinfo variable.
- *
- * The game can override any of the settings and call trap_SetUserinfo
- * if desired.
- *
- * @see CG_NewClientInfo()
- */
+/*
+===========
+ClientUserInfoChanged
+
+Called from ClientConnect when the player first connects and
+directly by the server system when the player updates a userinfo variable.
+
+The game can override any of the settings and call trap_SetUserinfo
+if desired.
+============
+*/
 void ClientUserinfoChanged(int clientNum) {
 	gentity_t *ent;
 	int teamLeader, team, health, randomColor;
@@ -760,7 +762,6 @@ void ClientUserinfoChanged(int clientNum) {
 	gclient_t *client;
 	char sprayColor[MAX_INFO_STRING];
 	char userinfo[MAX_INFO_STRING];
-	gender_t gender;
 
 	ent = g_entities + clientNum;
 	client = ent->client;
@@ -813,20 +814,6 @@ void ClientUserinfoChanged(int clientNum) {
 	}
 	client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth;
 
-	// set gender
-	s = Info_ValueForKey(userinfo, "sex");
-	if (!Q_stricmp(s, "neuter")) {
-		gender = GENDER_NEUTER;
-	} else if (!Q_stricmp(s, "female")) {
-		gender = GENDER_FEMALE;
-	} else if (!Q_stricmp(s, "male")) {
-		gender = GENDER_MALE;
-	} else if (!Q_stricmp(s, "none")) {
-		gender = GENDER_NONE;
-	} else {
-		gender = GENDER_MAX;
-	}
-
 	// set model
 	if (g_gametype.integer >= GT_TEAM) {
 		Q_strncpyz(model, Info_ValueForKey(userinfo, "team_model"), sizeof(model));
@@ -858,19 +845,16 @@ void ClientUserinfoChanged(int clientNum) {
 	// send over a subset of the userinfo keys so other clients can
 	// print scoreboards, display models, and play custom sounds
 	if (ent->r.svFlags & SVF_BOT) {
-		// cyr{
 		const char *rndSprayColor;
 		int rnd = randomindex(NUM_COLORS);
 		rndSprayColor = va("%d", rnd);
-		s = va("n\\%s\\t\\%i\\model\\%s\\hmodel\\%s\\sc\\%s\\hc\\%i\\w\\%i\\l\\%i\\skill\\%s\\tl\\%d"
-			   "\\sl\\%s",
+		s = va("n\\%s\\t\\%i\\model\\%s\\hmodel\\%s\\sc\\%s\\hc\\%i\\w\\%i\\l\\%i\\skill\\%s\\tl\\%d\\sl\\%s",
 			   client->pers.netname, team, model, headModel, rndSprayColor, client->pers.maxHealth, client->sess.wins,
 			   client->sess.losses, Info_ValueForKey(userinfo, "skill"), teamLeader, client->sess.selectedlogo);
-		// cyr}
 	} else {
-		s = va("n\\%s\\t\\%i\\model\\%s\\hmodel\\%s\\sc\\%s\\rc\\%i\\hc\\%i\\w\\%i\\l\\%i\\tl\\%d\\sl\\%s\\s\\%i",
-			   client->pers.netname, client->sess.sessionTeam, model, headModel, sprayColor, randomColor, client->pers.maxHealth,
-			   client->sess.wins, client->sess.losses, teamLeader, client->sess.selectedlogo, (int)gender);
+		s = va("n\\%s\\t\\%i\\model\\%s\\hmodel\\%s\\sc\\%s\\rc\\%i\\hc\\%i\\w\\%i\\l\\%i\\tl\\%d\\sl\\%s",
+			   client->pers.netname, client->sess.sessionTeam, model, headModel, sprayColor, randomColor,
+			   client->pers.maxHealth, client->sess.wins, client->sess.losses, teamLeader, client->sess.selectedlogo);
 	}
 
 	trap_SetConfigstring(CS_PLAYERS + clientNum, s);
diff --git a/code/ui/ui_playersettings.c b/code/ui/ui_playersettings.c
index da7c9f32f..3a2cbf80c 100644
--- a/code/ui/ui_playersettings.c
+++ b/code/ui/ui_playersettings.c
@@ -38,18 +38,17 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #define ID_NAME 20
 #define ID_HANDICAP 21
-#define ID_GENDER 22
-#define ID_PREVMODEL 23
-#define ID_NEXTMODEL 24
-#define ID_PREVSKIN 25
-#define ID_NEXTSKIN 26
-#define ID_MICON 27 //+5
-#define ID_SICON 33 //+11
-#define ID_PLAYERMODEL 45
-#define ID_PREVLOGO 46
-#define ID_NEXTLOGO 47
-#define ID_RANDOMCOLOR 48
-#define ID_SPRAYCOLOR 49
+#define ID_PREVMODEL 22
+#define ID_NEXTMODEL 23
+#define ID_PREVSKIN 24
+#define ID_NEXTSKIN 25
+#define ID_MICON 26 //+5
+#define ID_SICON 32 //+11
+#define ID_PLAYERMODEL 44
+#define ID_PREVLOGO 45
+#define ID_NEXTLOGO 46
+#define ID_RANDOMCOLOR 47
+#define ID_SPRAYCOLOR 48
 
 #define MAX_NAMELENGTH 20
 
@@ -77,7 +76,6 @@ typedef struct {
 	menutext_s nameheader;
 	menufield_s name;
 	menulist_s handicap;
-	menulist_s gender;
 	menutext_s logoheader;
 	menutext_s logoname;
 
@@ -115,8 +113,6 @@ typedef struct {
 
 static playersettings_t s_playersettings;
 
-static const char *gender_items[] = {S_COLOR_WHITE "Model", S_COLOR_WHITE "Male", S_COLOR_WHITE "Female", S_COLOR_WHITE "Neuter", S_COLOR_WHITE "None", NULL};
-
 static const char *handicap_items[] = {S_COLOR_WHITE "None", S_COLOR_WHITE "90", S_COLOR_WHITE "80", S_COLOR_WHITE "70", S_COLOR_WHITE "60",
 									   S_COLOR_WHITE "50", S_COLOR_WHITE "40", S_COLOR_WHITE "30", S_COLOR_WHITE "20", S_COLOR_WHITE "10",
 									   NULL};
@@ -254,7 +250,6 @@ UI_PlayerSettings_SaveChanges
 =================
 */
 static void UI_PlayerSettings_SaveChanges(void) {
-	int g;
 
 	// name
 	trap_Cvar_Set("name", s_playersettings.name.field.buffer);
@@ -262,20 +257,6 @@ static void UI_PlayerSettings_SaveChanges(void) {
 	// handicap
 	trap_Cvar_SetValue("handicap", 100 - s_playersettings.handicap.curvalue * 10);
 
-	// gender
-	g = s_playersettings.gender.curvalue;
-	if (g > 3) {
-		trap_Cvar_Set("sex", "none");
-	} else if (g == 1) {
-		trap_Cvar_Set("sex", "male");
-	} else if (g == 2) {
-		trap_Cvar_Set("sex", "female");
-	} else if (g == 3) {
-		trap_Cvar_Set("sex", "neuter");
-	} else {
-		trap_Cvar_Set("sex", "model");
-	}
-
 	// spray logo
 	trap_Cvar_Set("syc_logo", uis.spraylogoNames[s_playersettings.slogo_num]);
 
@@ -327,7 +308,6 @@ UI_PlayerSettings_SetMenuItems
 static void UI_PlayerSettings_SetMenuItems(void) {
 	int c;
 	int h;
-	char gStr[32];
 	char modelname[32];
 
 	// name
@@ -371,20 +351,6 @@ static void UI_PlayerSettings_SetMenuItems(void) {
 	h = Com_Clamp(10, 100, trap_Cvar_VariableValue("handicap"));
 	s_playersettings.handicap.curvalue = 10 - h / 10;
 
-	// gender
-	trap_Cvar_VariableStringBuffer("sex", gStr, sizeof(gStr));
-	if (!Q_stricmp(gStr, "none")) {
-		s_playersettings.gender.curvalue = 4;
-	} else if (!Q_stricmp(gStr, "neuter")) {
-		s_playersettings.gender.curvalue = 3;
-	} else if (!Q_stricmp(gStr, "female")) {
-		s_playersettings.gender.curvalue = 2;
-	} else if (!Q_stricmp(gStr, "male")) {
-		s_playersettings.gender.curvalue = 1;
-	} else {
-		s_playersettings.gender.curvalue = 0;
-	}
-
 	// random spray color
 	s_playersettings.randomcolor.curvalue = Com_Clamp(0, 1, trap_Cvar_VariableValue("randomcolor"));
 }
@@ -621,7 +587,7 @@ static void UI_PlayerSettings_Draw(void) {
 	i = Com_Clamp(0, (NUM_COLORS - 1), i);
 
 	x = 92;
-	y = 284;
+	y = 284 - 9;
 	UI_SetColor(g_color_table[i]);
 	UI_DrawHandlePic(x, y, 64, 64, uis.spraylogoShaders[s_playersettings.slogo_num]);
 	Q_strncpyz(logoName, SkipLogoNumber(uis.spraylogoNames[s_playersettings.slogo_num]), sizeof(logoName));
@@ -635,7 +601,7 @@ static void UI_PlayerSettings_Draw(void) {
 	}
 
 	x = 52;
-	y = 302;
+	y = 302 - 9;
 	UI_SetColor(g_color_table[i]);
 	UI_DrawHandlePic(x, y, 32, 32, uis.spraylogoShaders[prevlogo]);
 	if (uis.cursorx >= x && uis.cursorx <= (x + 32) && uis.cursory >= y && uis.cursory <= (y + 32)) {
@@ -816,7 +782,6 @@ static void UI_PlayerSettings_MenuEvent(void *ptr, int event) {
 	switch (tmpid) {
 
 	case ID_HANDICAP:
-	case ID_GENDER:
 		break;
 
 	case ID_BACK:
@@ -1124,20 +1089,6 @@ static void UI_PlayerSettings_MenuInit(void) {
 	s_playersettings.handicap.generic.y = y;
 	s_playersettings.handicap.itemnames = handicap_items;
 
-	y += BIGCHAR_HEIGHT + 2;
-	s_playersettings.gender.generic.type = MTYPE_SPINCONTROL;
-	s_playersettings.gender.generic.name = "Gender:";
-	s_playersettings.gender.generic.flags = QMF_SMALLFONT;
-	s_playersettings.gender.generic.id = ID_GENDER;
-	s_playersettings.gender.generic.callback = UI_PlayerSettings_MenuEvent;
-	s_playersettings.gender.generic.x = XPOSITION;
-	s_playersettings.gender.generic.y = y;
-	s_playersettings.gender.itemnames = gender_items;
-	s_playersettings.gender.generic.toolTip =
-		"Choose a desired gender, which is normally determined by the chosen player model, or choose "
-		"none to deactivate the gender. Default is model. NOTE: None forces the game to use they/them "
-		"instead of he/his, she/her, or it/its for your character.";
-
 	y += BIGCHAR_HEIGHT + 2;
 	s_playersettings.logoheader.generic.type = MTYPE_TEXT;
 	s_playersettings.logoheader.generic.x = XPOSITION - 96;
@@ -1153,7 +1104,7 @@ static void UI_PlayerSettings_MenuInit(void) {
 	s_playersettings.logoname.style = UI_LEFT | UI_SMALLFONT;
 	s_playersettings.logoname.color = color_white;
 
-	y += 5 * (BIGCHAR_HEIGHT + 2);
+	y += 6 * (BIGCHAR_HEIGHT + 2);
 	s_playersettings.randomcolor.generic.type = MTYPE_RADIOBUTTON;
 	s_playersettings.randomcolor.generic.name = "Random Color:";
 	s_playersettings.randomcolor.generic.flags = QMF_SMALLFONT;
@@ -1188,7 +1139,6 @@ static void UI_PlayerSettings_MenuInit(void) {
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.nameheader);
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.name);
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.handicap);
-	Menu_AddItem(&s_playersettings.menu, &s_playersettings.gender);
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.logoheader);
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.logoname);
 	Menu_AddItem(&s_playersettings.menu, &s_playersettings.logoleft);