diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index 1ca8647..7c9d49b 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -255,10 +255,8 @@
 #else
 
 			{	CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
-				/*
 				if ( strcmp(name, "portBits") == 0 )
-					return BMObj_New((BitMapPtr)GetPortPixMap(itself_color));
-				*/
+					return BMObj_New((BitMapPtr)GetPortBitMapForCopyBits(itself_color));
 				if ( strcmp(name, "chExtra") == 0 )
 					return Py_BuildValue("h", GetPortChExtra(itself_color));
 				if ( strcmp(name, "pnLocHFrac") == 0 )
@@ -276,12 +274,12 @@
 					return Py_BuildValue("O&", QdRGB_New, GetPortBackColor(itself_color, &c));
 				}
 				if ( strcmp(name, "pnPixPat") == 0 ) {
-					PixPatHandle h=0;
+					PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
 					
 					return Py_BuildValue("O&", ResObj_New, (Handle)GetPortPenPixPat(itself_color, h));
 				}
 				if ( strcmp(name, "fillPixPat") == 0 ) {
-					PixPatHandle h=0;
+					PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
 					return Py_BuildValue("O&", ResObj_New, (Handle)GetPortFillPixPat(itself_color, h));
 				}
 				if ( strcmp(name, "portRect") == 0 ) {
@@ -289,11 +287,11 @@
 					return Py_BuildValue("O&", PyMac_BuildRect, GetPortBounds(itself_color, &r));
 				}
 				if ( strcmp(name, "visRgn") == 0 ) {
-					RgnHandle h=0;
+					RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
 					return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(itself_color, h));
 				}
 				if ( strcmp(name, "clipRgn") == 0 ) {
-					RgnHandle h=0;
+					RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
 					return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(itself_color, h));
 				}
 				if ( strcmp(name, "pnLoc") == 0 ) {
@@ -3858,6 +3856,22 @@
 	return _res;
 }
 
+static PyObject *Qd_GetPortBitMapForCopyBits(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	const BitMap * _rv;
+	CGrafPtr port;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      GrafObj_Convert, &port))
+		return NULL;
+	_rv = GetPortBitMapForCopyBits(port);
+	_res = Py_BuildValue("O&",
+	                     BMObj_New, _rv);
+	return _res;
+}
+
 static PyObject *Qd_GetPortBounds(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -5931,6 +5945,8 @@
 	 "(Fixed slope) -> (short _rv)"},
 	{"GetPortPixMap", (PyCFunction)Qd_GetPortPixMap, 1,
 	 "(CGrafPtr port) -> (PixMapHandle _rv)"},
+	{"GetPortBitMapForCopyBits", (PyCFunction)Qd_GetPortBitMapForCopyBits, 1,
+	 "(CGrafPtr port) -> (const BitMap * _rv)"},
 	{"GetPortBounds", (PyCFunction)Qd_GetPortBounds, 1,
 	 "(CGrafPtr port) -> (Rect rect)"},
 	{"GetPortForeColor", (PyCFunction)Qd_GetPortForeColor, 1,
diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py
index 6711ac2..6336ba8 100644
--- a/Mac/Modules/qd/qdscan.py
+++ b/Mac/Modules/qd/qdscan.py
@@ -100,7 +100,6 @@
 			'GetPortHWND',
 			'GetHWNDPort',
 			'GetPICTFromDIB',
-			'GetPortBitMapForCopyBits', # Something funny in the declaration
 			
 			'HandleToRgn', # Funny signature
 
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 80d1709..b255110 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -45,6 +45,7 @@
 CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
 GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
 BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
+const_BitMap_ptr = OpaqueByValueType("const BitMap *", "BMObj")
 BitMap = OpaqueType("BitMap", "BMObj")
 RGBColor = OpaqueType('RGBColor', 'QdRGB')
 RGBColor_ptr = RGBColor
@@ -284,10 +285,8 @@
 		Output("#else")
 		Output("""
 		{	CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
-			/*
 			if ( strcmp(name, "portBits") == 0 )
-				return BMObj_New((BitMapPtr)GetPortPixMap(itself_color));
-			*/
+				return BMObj_New((BitMapPtr)GetPortBitMapForCopyBits(itself_color));
 			if ( strcmp(name, "chExtra") == 0 )
 				return Py_BuildValue("h", GetPortChExtra(itself_color));
 			if ( strcmp(name, "pnLocHFrac") == 0 )
@@ -305,12 +304,12 @@
 				return Py_BuildValue("O&", QdRGB_New, GetPortBackColor(itself_color, &c));
 			}
 			if ( strcmp(name, "pnPixPat") == 0 ) {
-				PixPatHandle h=0;
+				PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
 				
 				return Py_BuildValue("O&", ResObj_New, (Handle)GetPortPenPixPat(itself_color, h));
 			}
 			if ( strcmp(name, "fillPixPat") == 0 ) {
-				PixPatHandle h=0;
+				PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
 				return Py_BuildValue("O&", ResObj_New, (Handle)GetPortFillPixPat(itself_color, h));
 			}
 			if ( strcmp(name, "portRect") == 0 ) {
@@ -318,11 +317,11 @@
 				return Py_BuildValue("O&", PyMac_BuildRect, GetPortBounds(itself_color, &r));
 			}
 			if ( strcmp(name, "visRgn") == 0 ) {
-				RgnHandle h=0;
+				RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
 				return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(itself_color, h));
 			}
 			if ( strcmp(name, "clipRgn") == 0 ) {
-				RgnHandle h=0;
+				RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
 				return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(itself_color, h));
 			}
 			if ( strcmp(name, "pnLoc") == 0 ) {
