diff --git a/gfx/2d/Rect.h b/gfx/2d/Rect.h
--- a/gfx/2d/Rect.h
+++ b/gfx/2d/Rect.h
@@ -9,16 +9,20 @@
 
 #include "BaseRect.h"
 #include "BaseMargin.h"
 #include "NumericTools.h"
 #include "Point.h"
 #include "Tools.h"
 #include "mozilla/Maybe.h"
 
+#include "mozilla/Alignment.h"
+#include "mozilla/SSE.h"
+#include <smmintrin.h>
+
 #include <cmath>
 
 namespace mozilla {
 
 template <typename> struct IsPixel;
 
 namespace gfx {
 
@@ -90,16 +94,19 @@ struct IntRectTyped :
     typedef BaseRect<int32_t, IntRectTyped<units>, IntPointTyped<units>, IntSizeTyped<units>, IntMarginTyped<units> > Super;
     typedef IntRectTyped<units> Self;
     typedef IntParam<int32_t> ToInt;
 
     IntRectTyped() : Super() {}
     IntRectTyped(const IntPointTyped<units>& aPos, const IntSizeTyped<units>& aSize) :
         Super(aPos, aSize) {}
 
+    IntRectTyped(const __m128i& a128i) :
+        Super(a128i) {}
+
     IntRectTyped(ToInt aX, ToInt aY, ToInt aWidth, ToInt aHeight) :
         Super(aX.value, aY.value, aWidth.value, aHeight.value) {}
 
     static IntRectTyped<units> RoundIn(float aX, float aY, float aW, float aH) {
       return IntRectTyped<units>::RoundIn(RectTyped<units, float>(aX, aY, aW, aH));
     }
 
     static IntRectTyped<units> RoundOut(float aX, float aY, float aW, float aH) {
