//   NOTE: 1 point == 1/72 of an inch.
     //
 
-    vSizef.cx = (FIXED)(((fxPointSize) / 72 ) * lXFontResolution );
-    vSizef.cy = (FIXED)(((fxPointSize) / 72 ) * lYFontResolution );
+    // multiply first to avoid getting vSizef.cx,cy = 0 since fxPointSize
+    // is normally < 72 and FontResolution is typically ca. 100
+    vSizef.cx = (FIXED)( (fxPointSize * lXFontResolution) / 72 );
+    vSizef.cy = (FIXED)( (fxPointSize * lYFontResolution) / 72 );
 
-    pFattrs->lMaxBaselineExt = MAKELONG( HIUSHORT( vSizef.cy ), 0 );
-    pFattrs->lAveCharWidth   = MAKELONG( HIUSHORT( vSizef.cx ), 0 );
+    if (pFattrs)
+    {
+        pFattrs->lMaxBaselineExt = MAKELONG( HIUSHORT( vSizef.cy ), 0 );
+        pFattrs->lAveCharWidth   = MAKELONG( HIUSHORT( vSizef.cx ), 0 );
+    }
     WinReleasePS(hPS);
 
 } // end of wxConvertVectorPointSize