diff --git a/Mac/Modules/app/_Appmodule.c b/Mac/Modules/app/_Appmodule.c
index ab330a5..062197a 100644
--- a/Mac/Modules/app/_Appmodule.c
+++ b/Mac/Modules/app/_Appmodule.c
@@ -660,6 +660,40 @@
 
 #if TARGET_API_MAC_CARBON
 
+static PyObject *App_DrawThemeTextBox(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFStringRef inString;
+	ThemeFontID inFontID;
+	ThemeDrawState inState;
+	Boolean inWrapToWidth;
+	Rect inBoundingBox;
+	SInt16 inJust;
+	if (!PyArg_ParseTuple(_args, "O&HlbO&h",
+	                      CFStringRefObj_Convert, &inString,
+	                      &inFontID,
+	                      &inState,
+	                      &inWrapToWidth,
+	                      PyMac_GetRect, &inBoundingBox,
+	                      &inJust))
+		return NULL;
+	_err = DrawThemeTextBox(inString,
+	                        inFontID,
+	                        inState,
+	                        inWrapToWidth,
+	                        &inBoundingBox,
+	                        inJust,
+	                        NULL);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
 static PyObject *App_TruncateThemeText(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
@@ -702,11 +736,12 @@
 	Boolean inWrapToWidth;
 	Point ioBounds;
 	SInt16 outBaseline;
-	if (!PyArg_ParseTuple(_args, "O&Hlb",
+	if (!PyArg_ParseTuple(_args, "O&HlbO&",
 	                      CFStringRefObj_Convert, &inString,
 	                      &inFontID,
 	                      &inState,
-	                      &inWrapToWidth))
+	                      &inWrapToWidth,
+	                      PyMac_GetPoint, &ioBounds))
 		return NULL;
 	_err = GetThemeTextDimensions(inString,
 	                              inFontID,
@@ -1204,13 +1239,18 @@
 	 "(ThemeFontID inFontID, ScriptCode inScript) -> None"},
 
 #if TARGET_API_MAC_CARBON
+	{"DrawThemeTextBox", (PyCFunction)App_DrawThemeTextBox, 1,
+	 "(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Rect inBoundingBox, SInt16 inJust) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
 	{"TruncateThemeText", (PyCFunction)App_TruncateThemeText, 1,
 	 "(CFMutableStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, SInt16 inPixelWidthLimit, TruncCode inTruncWhere) -> (Boolean outTruncated)"},
 #endif
 
 #if TARGET_API_MAC_CARBON
 	{"GetThemeTextDimensions", (PyCFunction)App_GetThemeTextDimensions, 1,
-	 "(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth) -> (Point ioBounds, SInt16 outBaseline)"},
+	 "(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Point ioBounds) -> (Point ioBounds, SInt16 outBaseline)"},
 #endif
 
 #if TARGET_API_MAC_CARBON
diff --git a/Mac/Modules/app/appscan.py b/Mac/Modules/app/appscan.py
index 62409c7..5a7750a 100644
--- a/Mac/Modules/app/appscan.py
+++ b/Mac/Modules/app/appscan.py
@@ -48,7 +48,6 @@
 			"appearanceBadTextColorIndexErr",
 			"appearanceThemeHasNoAccents",
 			"appearanceBadCursorIndexErr",
-			"DrawThemeTextBox",    # Funny void* out param
 			]
 
 	def makegreylist(self):
@@ -58,6 +57,7 @@
 				'GetThemeTextShadowOutset',
 				'GetThemeTextDimensions',
 				'TruncateThemeText',
+				'DrawThemeTextBox',
 			])]
 			
 	def makeblacklisttypes(self):
@@ -80,6 +80,10 @@
 
 	def makerepairinstructions(self):
 		return [
+			([("void", 'inContext', "OutMode")],
+			 [("NULL", 'inContext', "InMode")]),
+			([("Point", 'ioBounds', "OutMode")],
+			 [("Point", 'ioBounds', "InOutMode")]),
 			]
 			
 if __name__ == "__main__":
diff --git a/Mac/Modules/app/appsupport.py b/Mac/Modules/app/appsupport.py
index a0eff8e..94361a9 100644
--- a/Mac/Modules/app/appsupport.py
+++ b/Mac/Modules/app/appsupport.py
@@ -27,6 +27,8 @@
 #WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
 
 RgnHandle = FakeType("(RgnHandle)0")
+NULL = FakeType("NULL")
+
 # XXXX Should be next, but this will break a lot of code...
 # RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj")
 
