diff --git a/src/k_menudraw.c b/src/k_menudraw.c
index c920f1bb64c4e630de508d5074cff6ff840589ec..5cbd79f73a45aeb3b5b34877e3fa0f25b6a22494 100644
--- a/src/k_menudraw.c
+++ b/src/k_menudraw.c
@@ -8833,7 +8833,16 @@ void M_DrawSoundTest(void)
 		if (soundtest.current->source)
 			V_DrawThinString(x+1, (y += 10), 0, soundtest.current->source);
 		if (soundtest.current->composers)
-			V_DrawThinString(x+1, (y += 10), 0, soundtest.current->composers);
+		{
+			char *wrappedcomposers = V_ScaledWordWrap(
+				(BASEVIDWIDTH - ((x+1)*2)) << FRACBITS,
+				FRACUNIT, FRACUNIT, FRACUNIT,
+				0, TINY_FONT,
+				soundtest.current->composers
+			);
+			V_DrawThinString(x+1, (y += 10), 0, wrappedcomposers);
+			Z_Free(wrappedcomposers);
+		}
 	}
 	else
 	{
diff --git a/src/s_sound.c b/src/s_sound.c
index c1d9a4df252eab0bb55e582ba36d4bb806d389cf..4369f92505d1e8ba2bd8be52a8b59105a12abead 100644
--- a/src/s_sound.c
+++ b/src/s_sound.c
@@ -2204,7 +2204,7 @@ void S_LoadMusicCredit(void)
 
 		widthused -= V_ThinStringWidth(credittext, 0);
 
-#define MUSICCREDITAPPEND(field)\
+#define MUSICCREDITAPPEND(field, force)\
 		if (field)\
 		{\
 			work = va(" - %s", field);\
@@ -2212,7 +2212,7 @@ void S_LoadMusicCredit(void)
 			if (worklen <= len)\
 			{\
 				workwidth = V_ThinStringWidth(work, 0);\
-				if (widthused >= workwidth)\
+				if (force || widthused >= workwidth)\
 				{\
 					strncat(credittext, work, len);\
 					len -= worklen;\
@@ -2221,8 +2221,8 @@ void S_LoadMusicCredit(void)
 			}\
 		}
 
-		MUSICCREDITAPPEND(def->author);
-		MUSICCREDITAPPEND(def->source);
+		MUSICCREDITAPPEND(def->author, true);
+		MUSICCREDITAPPEND(def->source, false);
 
 #undef MUSICCREDITAPPEND
 	}