diff --git a/controls/menu.c b/controls/menu.c
index 935e8e3..e1647fb 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -759,6 +759,7 @@
 		++orgY;
 
 	    MENU_CalcItemSize( hdc, lpitem, hwndOwner, orgX, orgY, FALSE );
+
             if (lpitem->fType & MF_MENUBARBREAK) orgX++;
 	    maxX = MAX( maxX, lpitem->rect.right );
 	    orgY = lpitem->rect.bottom;
@@ -829,6 +830,7 @@
 			 orgX, orgY );
 	    debug_print_menuitem ("  item: ", lpitem, "");
 	    MENU_CalcItemSize( hdc, lpitem, hwndOwner, orgX, orgY, TRUE );
+
 	    if (lpitem->rect.right > lprect->right)
 	    {
 		if (i != start) break;
@@ -4091,36 +4093,42 @@
 
 /**********************************************************************
  *		GetMenuItemRect32    (USER32.266)
+ *
+ *      ATTENTION: Here, the returned values in rect are the screen 
+ *                 coordinates of the item just like if the menu was 
+ *                 always on the upper left side of the application.
+ *                 
  */
-
 BOOL32 WINAPI GetMenuItemRect32 (HWND32 hwnd, HMENU32 hMenu, UINT32 uItem,
 				 LPRECT32 rect)
 {
-     RECT32 saverect, clientrect;
-     BOOL32 barp;
-     HDC32 hdc;
-     WND *wndPtr;
+     POPUPMENU *itemMenu;
      MENUITEM *item;
-     HMENU32 orghMenu = hMenu;
+     HWND32 referenceHwnd;
 
-     TRACE(menu, "(0x%x,0x%x,%d,%p)\n",
-		  hwnd, hMenu, uItem, rect);
+     TRACE(menu, "(0x%x,0x%x,%d,%p)\n", hwnd, hMenu, uItem, rect);
 
      item = MENU_FindItem (&hMenu, &uItem, MF_BYPOSITION);
-     wndPtr = WIN_FindWndPtr (hwnd);
-     if (!rect || !item || !wndPtr) return FALSE;
+     referenceHwnd = hwnd;
 
-     GetClientRect32( hwnd, &clientrect );
-     hdc = GetDCEx32( hwnd, 0, DCX_CACHE | DCX_WINDOW );
-     barp = (hMenu == orghMenu);
+     if(!hwnd)
+     {
+	 itemMenu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);
+	 if (itemMenu == NULL) 
+	     return FALSE;
 
-     saverect = item->rect;
-     MENU_CalcItemSize (hdc, item, hwnd,
-			clientrect.left, clientrect.top, barp);
+	 if(itemMenu->hWnd == NULL)
+	     return FALSE;
+	 referenceHwnd = itemMenu->hWnd;
+     }
+
+     if ((rect == NULL) || (item == NULL)) 
+	 return FALSE;
+
      *rect = item->rect;
-     item->rect = saverect;
 
-     ReleaseDC32( hwnd, hdc );
+     MapWindowPoints32(referenceHwnd, 0, (LPPOINT32)rect, 2);
+
      return TRUE;
 }
 
