// For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#include "wx/pen.h"
+
 #ifndef WX_PRECOMP
     #include <stdio.h>
     #include "wx/list.h"
     #include "wx/utils.h"
     #include "wx/app.h"
-    #include "wx/pen.h"
     #include "wx/log.h"
 #endif
 
     m_nWidth  = 1;
     m_nJoin   = wxJOIN_ROUND ;
     m_nCap    = wxCAP_ROUND ;
+    m_nbDash  = 0 ;
+    m_dash    = (wxDash*)NULL;
     m_hPen    = 0L;
 } // end of wxPenRefData::wxPenRefData
 
     m_nWidth  = rData.m_nWidth;
     m_nJoin   = rData.m_nJoin;
     m_nCap    = rData.m_nCap;
+    m_nbDash  = rData.m_nbDash;
+    m_dash    = rData.m_dash;
     m_vColour = rData.m_vColour;
     m_hPen    = 0L;
 } // end of wxPenRefData::wxPenRefData
 //
 wxPen::wxPen()
 {
-    if ( wxThePenList )
-        wxThePenList->AddPen(this);
 } // end of wxPen::wxPen
 
 wxPen::~wxPen()
 {
-    if (wxThePenList)
-        wxThePenList->RemovePen(this);
 } // end of wxPen::wxPen
 
 // Should implement Create
     M_PENDATA->m_hPen    = 0L;
 
     RealizeResource();
-
-    if ( wxThePenList )
-        wxThePenList->AddPen(this);
 } // end of wxPen::wxPen
 
 wxPen::wxPen(
     M_PENDATA->m_hPen     = 0;
 
     RealizeResource();
-
-    if ( wxThePenList )
-        wxThePenList->AddPen(this);
 } // end of wxPen::wxPen
 
 int wx2os2PenStyle(
         }
         m_vLineBundle.lColor     = (LONG)vPmColour;
         m_vLineBundle.usMixMode  = FM_OVERPAINT;
+        if (M_PENDATA->m_nWidth < 1)
+            M_PENDATA->m_nWidth = 1;
         m_vLineBundle.fxWidth    = M_PENDATA->m_nWidth;
         m_vLineBundle.lGeomWidth = M_PENDATA->m_nWidth;
         m_vLineBundle.usType     = uLineType;
     return false;
 } // end of wxPen::RealizeResource
 
-WXHANDLE wxPen::GetResourceHandle()
+WXHANDLE wxPen::GetResourceHandle() const
 {
     if (!M_PENDATA)
         return 0;