diff --git a/win32ss/gdi/ntgdi/text.c b/win32ss/gdi/ntgdi/text.c
index 2ea694103a..a3c120e4ec 100644
--- a/win32ss/gdi/ntgdi/text.c
+++ b/win32ss/gdi/ntgdi/text.c
@@ -13,6 +13,48 @@
 #define NDEBUG
 #include <debug.h>
 
+
+/*
+   This is a hack. See CORE-1091.
+
+   It is needed because ReactOS does not support raster fonts now
+   After Raster Font support is added, then it can be removed
+   Find the current font's logfont for testing its lf.lfFaceName
+
+   The ftGdiGetTextMetricsW function currently in ReactOS will always return a Truetype font
+   because we cannot yet handle raster fonts. So it will return flags
+   TMPF_VECTOR and TMPF_TRUETYPE, which can cause problems in edit boxes
+ */
+
+VOID FASTCALL
+IntTMWFixUp(
+   HDC hDC,
+   TMW_INTERNAL *ptm )
+{
+    LOGFONTW lf;
+    HFONT hCurrentFont;
+
+    hCurrentFont = NtGdiGetDCObject( hDC, GDI_OBJECT_TYPE_FONT );
+    GreGetObject(hCurrentFont, sizeof(LOGFONTW), &lf );
+
+    /* To compensate for the GetTextMetricsW call changing the PitchAndFamily */
+    /* to a Truetype one when we have a 'helv' font as our input we and (&)   */
+    /* our current PitchAndFamily with 0xF9 to remove the two problem bits    */
+    /* Out list below checks for Raster Font Facenames                        */
+    DPRINT1("Font Facename is '%S'.\n", lf.lfFaceName);
+    if ((wcsicmp(lf.lfFaceName, L"Helv") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"Courier") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"MS Sans Serif") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"MS Serif") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"Times New Roman") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"MS Shell Dlg") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"System") == 0) ||
+        (wcsicmp(lf.lfFaceName, L"Terminal") == 0))
+    {
+        ptm->TextMetric.tmPitchAndFamily = ptm->TextMetric.tmPitchAndFamily & 0xF9;
+    }
+}
+
 /** Functions *****************************************************************/
 
 BOOL FASTCALL
@@ -154,6 +196,7 @@ GreGetTextMetricsW(
 {
    TMW_INTERNAL tmwi;
    if (!ftGdiGetTextMetricsW(hdc, &tmwi)) return FALSE;
+   IntTMWFixUp( hdc, &tmwi );
    *lptm = tmwi.TextMetric;
    return TRUE;
 }
@@ -555,6 +598,7 @@ NtGdiGetTextMetricsW(
     {
         if (ftGdiGetTextMetricsW(hDC, &Tmwi))
         {
+            IntTMWFixUp( hDC, &Tmwi );
             _SEH2_TRY
             {
                 ProbeForWrite(pUnsafeTmwi, cj, 1);
