diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg
index 250934fadf29e03466c61f66452a63f46af269db..4453edace6896216d4fe24efaa357ed671561224 100644
--- a/extras/conf/udb/Includes/SRB222_things.cfg
+++ b/extras/conf/udb/Includes/SRB222_things.cfg
@@ -4710,6 +4710,10 @@ udmf
 			sprite = "BLONA0";
 			width = 32;
 			height = 64;
+			stringarg0
+			{
+				title = "Color";
+			}
 		}
 		550
 		{
diff --git a/src/p_mobj.c b/src/p_mobj.c
index aaefa9fedc279730efdaf11c99553016e670eedf..bf413572f76c82330731cf6150d88e8287d86603 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -12750,8 +12750,8 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
 		}
 		break;
 	case MT_BALLOON:
-		if (mthing->angle > 0)
-			mobj->color = ((mthing->angle - 1) % (numskincolors - 1)) + 1;
+		if (mthing->stringargs[0])
+			mobj->color = get_number(mthing->stringargs[0]);
 		break;
 	case MT_FLAME:
 		if (mthing->args[0])
diff --git a/src/p_setup.c b/src/p_setup.c
index b25b3aa146cac590ffbe936c4759ab9fb6fee2f8..dfabc0e9f50874f66c883ec4f7c59823f6c8e752 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -4994,6 +4994,10 @@ static void P_ConvertBinaryMap(void)
 			mapthings[i].args[0] = mapthings[i].angle;
 			mapthings[i].args[1] = !!(mapthings[i].options & MTF_OBJECTSPECIAL);
 			break;
+		case 543: //Balloon
+			if (mapthings[i].angle > 0)
+				P_WriteConstant(((mapthings[i].angle - 1) % (numskincolors - 1)) + 1, &mapthings[i].stringargs[0]);
+			break;
 		case 555: //Diagonal yellow spring
 		case 556: //Diagonal red spring
 		case 557: //Diagonal blue spring