diff --git a/pkgs/applications/networking/browsers/firefox/4.0.nix b/pkgs/applications/networking/browsers/firefox/4.0.nix
index af6224475555..e2122b1d9893 100644
--- a/pkgs/applications/networking/browsers/firefox/4.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/4.0.nix
@@ -13,16 +13,17 @@
 
 rec {
 
-  firefoxVersion = "4.0b6";
+  firefoxVersion = "4.0b7";
   
-  xulVersion = "2.0b6"; # this attribute is used by other packages
+  xulVersion = "2.0b7"; # this attribute is used by other packages
 
   
   src = fetchurl {
     url = "http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2";
-    sha256 = "1ssgb41h43kbf012iwdybf9kp2gfqkg3icf81dg8ibwr2cd0kmz2";
+    sha256 = "02cc466a92af828ff3bc563d4515bd98064cf5f136b5871e072b9408fb4db128";
   };
 
+  enableParallelBuilding = true;
 
   commonConfigureFlags =
     [ "--enable-optimize"
@@ -48,11 +49,11 @@ rec {
     inherit src;
 
     buildInputs =
-      [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
+    [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
         python dbus dbus_glib pango freetype fontconfig xlibs.libXi
         xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
         alsaLib nspr /* nss */ libnotify xlibs.pixman libvpx yasm mesa
-	wirelesstools xlibs.libXscrnsaver xlibs.scrnsaverproto
+	wirelesstools xlibs.libXScrnSaver xlibs.scrnsaverproto
 	xlibs.libXext xlibs.xextproto
       ];
 
diff --git a/pkgs/development/libraries/cairo/1.10.nix b/pkgs/development/libraries/cairo/1.10.nix
new file mode 100644
index 000000000000..f1eaf65e69cf
--- /dev/null
+++ b/pkgs/development/libraries/cairo/1.10.nix
@@ -0,0 +1,60 @@
+{ postscriptSupport ? true
+, pdfSupport ? true
+, pngSupport ? true
+, xcbSupport ? false
+, stdenv, fetchurl, pkgconfig, x11, fontconfig, freetype
+, zlib, libpng, pixman, libxcb ? null, xcbutil ? null
+}:
+
+assert postscriptSupport -> zlib != null;
+assert pngSupport -> libpng != null;
+assert xcbSupport -> libxcb != null && xcbutil != null;
+
+stdenv.mkDerivation rec {
+  name = "cairo-1.10.0";
+  
+  src = fetchurl {
+    url = "http://cairographics.org/releases/${name}.tar.gz";
+    sha256 = "1cllxp8rx5zxkfpn36ysqg1kqz5d1cvbbf2fsy440n8m8v6f8b0g";
+  };
+
+  buildInputs =
+    [ pkgconfig x11 fontconfig pixman ] ++ 
+    stdenv.lib.optionals xcbSupport [ libxcb xcbutil ];
+
+  propagatedBuildInputs =
+    [ freetype ] ++
+    stdenv.lib.optional postscriptSupport zlib ++
+    stdenv.lib.optional pngSupport libpng;
+    
+  configureFlags =
+    stdenv.lib.optional xcbSupport "--enable-xcb" ++
+    stdenv.lib.optional pdfSupport "--enable-pdf";
+
+  preConfigure = ''
+    # Work around broken `Requires.private' that prevents Freetype
+    # `-I' flags to be propagated.
+    sed -i "src/cairo.pc.in" \
+        -es'|^Cflags:\(.*\)$|Cflags: \1 -I${freetype}/include/freetype2 -I${freetype}/include|g'
+  '';
+
+  meta = {
+    description = "A 2D graphics library with support for multiple output devices";
+
+    longDescription = ''
+      Cairo is a 2D graphics library with support for multiple output
+      devices.  Currently supported output targets include the X
+      Window System, Quartz, Win32, image buffers, PostScript, PDF,
+      and SVG file output.  Experimental backends include OpenGL
+      (through glitz), XCB, BeOS, OS/2, and DirectFB.
+
+      Cairo is designed to produce consistent output on all output
+      media while taking advantage of display hardware acceleration
+      when available (e.g., through the X Render Extension).
+    '';
+
+    homepage = http://cairographics.org/;
+
+    licenses = [ "LGPLv2+" "MPLv1" ];
+  };
+}
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 14be8c440a11..a19cb8ee57d4 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -967,6 +967,16 @@ let
     buildInputs = [pkgconfig perl ];
   })) // {inherit perl ;};
     
+  pixman_0_20_0 = (stdenv.mkDerivation ((if overrides ? pixman then overrides.pixman else x: x) {
+    name = "pixman-0.20.0";
+    builder = ./builder.sh;
+    src = fetchurl {
+      url = mirror://xorg/individual/lib/pixman-0.20.0.tar.bz2;
+      sha256 = "1dc804v98222n5awx1x1inwwdp6p7yksiw5yr8jip2pk3fbak627";
+    };
+    buildInputs = [pkgconfig perl ];
+  })) // {inherit perl ;};
+
   printproto = (stdenv.mkDerivation ((if overrides ? printproto then overrides.printproto else x: x) {
     name = "printproto-1.0.4";
     builder = ./builder.sh;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 56b3675d5722..fd09c5bf6497 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2619,6 +2619,9 @@ let
   buddy = callPackage ../development/libraries/buddy { };
 
   cairo = callPackage ../development/libraries/cairo { };
+  cairo_1_10_0 = callPackage ../development/libraries/cairo/1.10.nix {
+    pixman = xlibs.pixman_0_20_0;
+  };
 
   cairomm = callPackage ../development/libraries/cairomm { };