diff --git a/gfx/layers/opengl/CanvasLayerOGL.cpp b/gfx/layers/opengl/CanvasLayerOGL.cpp
index e10c617b7281..2b7b52979c0f 100644
--- a/gfx/layers/opengl/CanvasLayerOGL.cpp
+++ b/gfx/layers/opengl/CanvasLayerOGL.cpp
@@ -226,9 +226,10 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
mLayerProgram =
gl()->UploadSurfaceToTexture(mCanvasSurface,
- drawRect,
+ nsIntRect(0, 0, drawRect.width, drawRect.height),
mTexture,
- true);
+ true,
+ drawRect.TopLeft());
}
if (!program) {
program = mOGLManager->GetColorTextureLayerProgram(mLayerProgram);
diff --git a/layout/reftests/bugs/632781-normalsize.html b/layout/reftests/bugs/632781-normalsize.html
new file mode 100644
index 000000000000..0d5ab8958bda
--- /dev/null
+++ b/layout/reftests/bugs/632781-normalsize.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/reftests/bugs/632781-ref.html b/layout/reftests/bugs/632781-ref.html
new file mode 100644
index 000000000000..30b26fa5b33d
--- /dev/null
+++ b/layout/reftests/bugs/632781-ref.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/layout/reftests/bugs/632781-verybig.html b/layout/reftests/bugs/632781-verybig.html
new file mode 100644
index 000000000000..469ba214fe24
--- /dev/null
+++ b/layout/reftests/bugs/632781-verybig.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list
index b27e5b72318a..700828f26017 100644
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1611,3 +1611,5 @@ random-if(winWidget) HTTP(..) == 621918-2.svg 621918-2-ref.svg # same 1px issue
== 625409-1.html 625409-1-ref.html
== 627393-1.html about:blank
== 631352-1.html 631352-1-ref.html
+== 632781-verybig.html 632781-ref.html
+== 632781-normalsize.html 632781-ref.html