diff -Nrup metacity-2.18.2/src/ui/frames.c ../metacity-2.18.2/src/ui/frames.c
--- metacity-2.18.2/src/ui/frames.c	2007-04-09 03:32:46.000000000 +0200
+++ ../metacity-2.18.2/src/ui/frames.c	2007-04-12 15:34:25.878227000 +0200
@@ -752,6 +752,8 @@ meta_frames_apply_shapes (MetaFrames *fr
   XRectangle xrect;
   Region corners_xregion;
   Region window_xregion;
+  /* hack for nimbus theme */
+  gboolean nimbus_theme = (strcmp ("nimbus", meta_prefs_get_theme ()) == 0) ? TRUE : FALSE; 
   
   frame = meta_frames_lookup_window (frames, xwindow);
   g_return_if_fail (frame != NULL);
@@ -788,74 +790,120 @@ meta_frames_apply_shapes (MetaFrames *fr
   
   if (fgeom.top_left_corner_rounded_radius != 0)
     {
-      const int corner = fgeom.top_left_corner_rounded_radius;
-      const float radius = sqrt(corner) + corner;
-      int i;
-
-      for (i=0; i<corner; i++)
-        {
-          const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
-          xrect.x = 0;
-          xrect.y = i;
-          xrect.width = width;
-          xrect.height = 1;
-          
-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
-        }
+      if (nimbus_theme)
+	{
+	  xrect.x = 0;
+	  xrect.y = 0;
+	  xrect.width = 1;
+	  xrect.height = 1;
+	  XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	}
+      else
+	{
+	  const int corner = fgeom.top_left_corner_rounded_radius;
+	  const float radius = sqrt(corner) + corner;
+	  int i;
+
+	  for (i=0; i<corner; i++)
+	    {
+	      const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+	      xrect.x = 0;
+	      xrect.y = i;
+	      xrect.width = width;
+	      xrect.height = 1;
+
+	      XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	    }
+	}
     }
 
   if (fgeom.top_right_corner_rounded_radius != 0)
     {
-      const int corner = fgeom.top_right_corner_rounded_radius;
-      const float radius = sqrt(corner) + corner;
-      int i;
+      if (nimbus_theme)
+	{
+	  xrect.x = new_window_width - 1;
+	  xrect.y = 0;
+	  xrect.width = 1;
+	  xrect.height = 1;
+	  XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	}
+      else
+	{
 
-      for (i=0; i<corner; i++)
-        {
-          const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
-          xrect.x = new_window_width - width;
-          xrect.y = i;
-          xrect.width = width;
-          xrect.height = 1;
-          
-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
-        }
+	  const int corner = fgeom.top_right_corner_rounded_radius;
+	  const float radius = sqrt(corner) + corner;
+	  int i;
+
+	  for (i=0; i<corner; i++)
+	    {
+	      const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+	      xrect.x = new_window_width - width;
+	      xrect.y = i;
+	      xrect.width = width;
+	      xrect.height = 1;
+
+	      XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	    }
+	}
     }
 
   if (fgeom.bottom_left_corner_rounded_radius != 0)
     {
-      const int corner = fgeom.bottom_left_corner_rounded_radius;
-      const float radius = sqrt(corner) + corner;
-      int i;
+      if (nimbus_theme)
+	{
+	  xrect.x = 0;
+	  xrect.y = new_window_height - 1;
+	  xrect.width = 1;
+	  xrect.height = 1;
+	  XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	}
+      else
+	{
 
-      for (i=0; i<corner; i++)
-        {
-          const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
-          xrect.x = 0;
-          xrect.y = new_window_height - i - 1;
-          xrect.width = width;
-          xrect.height = 1;
-          
-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
-        }
+	  const int corner = fgeom.bottom_left_corner_rounded_radius;
+	  const float radius = sqrt(corner) + corner;
+	  int i;
+
+	  for (i=0; i<corner; i++)
+	    {
+	      const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+	      xrect.x = 0;
+	      xrect.y = new_window_height - i - 1;
+	      xrect.width = width;
+	      xrect.height = 1;
+
+	      XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	    }
+	}
     }
 
   if (fgeom.bottom_right_corner_rounded_radius != 0)
     {
-      const int corner = fgeom.bottom_right_corner_rounded_radius;
-      const float radius = sqrt(corner) + corner;
-      int i;
-
-      for (i=0; i<corner; i++)
-        {
-          const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
-          xrect.x = new_window_width - width;
-          xrect.y = new_window_height - i - 1;
-          xrect.width = width;
-          xrect.height = 1;
-          
-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
-        }
+      if (nimbus_theme)
+	{
+	  xrect.x = new_window_width - 1;
+	  xrect.y = new_window_height - 1;
+	  xrect.width = 1;
+	  xrect.height = 1;
+	  XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	}
+      else
+	{
+	  const int corner = fgeom.bottom_right_corner_rounded_radius;
+	  const float radius = sqrt(corner) + corner;
+	  int i;
+
+	  for (i=0; i<corner; i++)
+	    {
+	      const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+	      xrect.x = new_window_width - width;
+	      xrect.y = new_window_height - i - 1;
+	      xrect.width = width;
+	      xrect.height = 1;
+
+	      XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
+	    }
+	}
     }
   
   window_xregion = XCreateRegion ();
diff -Nrup metacity-2.18.2/src/ui/theme-parser.c ../metacity-2.18.2/src/ui/theme-parser.c
--- metacity-2.18.2/src/ui/theme-parser.c	2007-04-08 20:46:17.000000000 +0200
+++ ../metacity-2.18.2/src/ui/theme-parser.c	2007-04-12 15:23:40.286578000 +0200
@@ -913,6 +913,23 @@ parse_toplevel_element (GMarkupParseCont
         return;
       
       title_scale_val = 1.0;
+
+	{ /* Hack for Nimbus theme - pretend we have rounded corners this way the theme will 
+	     look Ok in non-patches version of metacity */
+	  gboolean nimbus_theme = (strcmp ("nimbus", info->theme_name) == 0) ? TRUE : FALSE;
+	  if (nimbus_theme)
+	    {
+	      rounded_top_left_val = TRUE;
+	      rounded_top_right_val = TRUE;
+	      rounded_bottom_left_val = TRUE;
+	      rounded_bottom_right_val = TRUE;
+	      rounded_top_left = TRUE;
+	      rounded_top_right = TRUE;
+	      rounded_bottom_left = TRUE;
+	      rounded_bottom_right = TRUE;
+	    }
+	}
+      
       if (title_scale && !parse_title_scale (title_scale, &title_scale_val, context, error))
         return;
       
