Index: xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c
===================================================================
--- xorg-server-1.3.0.0.orig/hw/kdrive/fbdev/fbdev.c	2008-09-25 21:55:12.000000000 +0100
+++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c	2008-09-25 21:55:46.000000000 +0100
@@ -498,6 +498,7 @@
     KdScreenInfo	*screen = pScreenPriv->screen;
     FbdevScrPriv	*scrpriv = screen->driver;
     Bool		wasEnabled = pScreenPriv->enabled;
+    FbdevPriv		*priv = screen->card->driver;
     FbdevScrPriv	oldscr;
     int			oldwidth;
     int			oldheight;
@@ -525,11 +526,46 @@
     oldheight = screen->height;
     oldmmwidth = pScreen->mmWidth;
     oldmmheight = pScreen->mmHeight;
-    
+
     /*
      * Set new configuration
      */
-    
+
+    if (newwidth != oldwidth || newheight != oldheight)
+    {
+	struct fb_var_screeninfo var;
+	int k;
+
+	k = ioctl (priv->fd, FBIOGET_VSCREENINFO, &var);
+
+	if (k < 0)
+	{
+	    ErrorF("Error with framebuffer ioctl FBIOGET_VSCREENINFO: %s", strerror (errno));
+	    return FALSE;
+	}
+
+	var.xres = newwidth;
+	var.yres = newheight;
+	var.activate = FB_ACTIVATE_NOW;
+
+	k = ioctl (priv->fd, FBIOPUT_VSCREENINFO, &var);
+
+	if (k >= 0)
+	{
+	    if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0)
+	    {
+		perror("Error with framebuffer ioctl FIOGET_FSCREENINFO");
+		close (priv->fd);
+		return FALSE;
+	    }
+	    if ((k=ioctl(priv->fd, FBIOGET_VSCREENINFO, &priv->var)) < 0) {
+		perror("Error  framebuffer ioctl FIOGET_VSCREENINFO");
+		close (priv->fd);
+		return FALSE;
+	    }
+	}
+    }
+
     scrpriv->randr = KdAddRotation (screen->randr, randr);
 
     KdOffscreenSwapOut (screen->pScreen);
