diff --git a/src/m_menu.c b/src/m_menu.c
index 5b85f65df0cc108d15d55756715c030bd5b55412..fdff4a0a1392ed6c1eea6c47a01f758930a56016 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -4751,7 +4751,7 @@ static void M_DrawPauseMenu(void)
 						emblemslot = 2;
 						break;
 					case ET_NGRADE:
-						snprintf(targettext, 9, "%u", P_GetScoreForGrade(gamemap, 0, emblem->var));
+						snprintf(targettext, 9, "%u", P_GetScoreForGradeOverall(gamemap, emblem->var));
 						snprintf(currenttext, 9, "%u", G_GetBestNightsScore(gamemap, 0));
 
 						targettext[8] = 0;
diff --git a/src/p_setup.c b/src/p_setup.c
index a1c96bed3f52d39ae4f82eb0bb3168de5c0e78cf..bdcb3b217f1651e3a3aa18af22d0368d39ad1a0c 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -508,6 +508,17 @@ UINT32 P_GetScoreForGrade(INT16 map, UINT8 mare, UINT8 grade)
 	return mapheaderinfo[map-1]->grades[mare].grade[grade-1];
 }
 
+UINT32 P_GetScoreForGradeOverall(INT16 map, UINT8 grade)
+{
+	UINT8 mares;
+	INT32 i;
+	UINT32 score = 0;
+	mares = mapheaderinfo[map-1]->numGradedMares;
+	for (i = 0; i < mares; ++i)
+			score += P_GetScoreForGrade(map, i, grade);
+	return score;
+}
+
 //
 // levelflats
 //
diff --git a/src/p_setup.h b/src/p_setup.h
index 9cb44ed5979e04d10accc4d64403a736b1810b0c..d0c47a521e8407aa22782a92c6e898a7bcafb266 100644
--- a/src/p_setup.h
+++ b/src/p_setup.h
@@ -122,5 +122,6 @@ void P_AddGradesForMare(INT16 i, UINT8 mare, char *gtext);
 UINT8 P_GetGrade(UINT32 pscore, INT16 map, UINT8 mare);
 UINT8 P_HasGrades(INT16 map, UINT8 mare);
 UINT32 P_GetScoreForGrade(INT16 map, UINT8 mare, UINT8 grade);
+UINT32 P_GetScoreForGradeOverall(INT16 map, UINT8 grade);
 
 #endif