diff -Naur plugins.orig/PluginView.cpp plugins/PluginView.cpp
--- plugins.orig/PluginView.cpp	2008-11-13 10:35:38.000000000 -0500
+++ plugins/PluginView.cpp	2008-11-13 12:19:33.000000000 -0500
@@ -427,6 +427,7 @@
         return NPERR_NO_ERROR;
 #if defined(XP_MACOSX)
     case NPPVpluginDrawingModel:
+	m_drawingModel = (int)value;
 	return NPERR_NO_ERROR;
     case NPPVpluginEventModel:
 	return NPERR_NO_ERROR;
@@ -570,6 +571,9 @@
 #if (PLATFORM(WIN_OS) && PLATFORM(QT)) || defined(XP_MACOSX)
     , m_window(0)
 #endif
+#if defined(XP_MACOSX)
+	, m_drawingModel(NPNVsupportsQuickDrawBool)
+#endif
     , m_loadManually(loadManually)
     , m_manualStream(0)
     , m_isJavaScriptPaused(false)
diff -Naur plugins.orig/PluginView.h plugins/PluginView.h
--- plugins.orig/PluginView.h	2008-11-13 10:35:38.000000000 -0500
+++ plugins/PluginView.h	2008-11-13 12:20:47.000000000 -0500
@@ -281,6 +281,8 @@
 private:
 
 #if defined(XP_MACOSX)
+		int m_drawingModel; /* actually NPNVariable but can't cast from void* */
+        NP_Port m_npQDPort;
         NP_CGContext m_npCgContext;
         OwnPtr<Timer<PluginView> > m_nullEventTimer;
 
diff -Naur plugins.orig/mac/PluginViewMac.cpp plugins/mac/PluginViewMac.cpp
--- plugins.orig/mac/PluginViewMac.cpp	2008-11-13 10:35:37.000000000 -0500
+++ plugins/mac/PluginViewMac.cpp	2008-11-13 10:51:32.000000000 -0500
@@ -146,7 +146,13 @@
 
     m_npCgContext.window = 0;
     m_npCgContext.context = 0;
-    m_npWindow.window = (void*)&m_npCgContext;
+	m_npQDPort.port = 0;
+	m_npQDPort.portx = 0;
+	m_npQDPort.porty = 0;
+	if (m_drawingModel == NPNVsupportsQuickDrawBool)
+		m_npWindow.window = (void*)&m_npQDPort;
+	else
+		m_npWindow.window = (void*)&m_npCgContext;
     m_npWindow.type = NPWindowTypeWindow;
     m_npWindow.x = 0;
     m_npWindow.y = 0;
@@ -378,7 +384,13 @@
         && newContextRef == m_npCgContext.context)
     return;
 
-    m_npWindow.window = (void*)&m_npCgContext;
+	m_npQDPort.port = ::GetWindowPort( newWindowRef );
+	m_npQDPort.portx = newGeometry.x();
+	m_npQDPort.porty = newGeometry.y();
+	if (m_drawingModel == NPNVsupportsQuickDrawBool)
+		m_npWindow.window = (void*)&m_npQDPort;
+	else
+		m_npWindow.window = (void*)&m_npCgContext;	
     m_npCgContext.window = newWindowRef;
     m_npCgContext.context = newContextRef;
 
