diff --git a/content/canvas/test/test_canvas.html b/content/canvas/test/test_canvas.html
index f3f6592f6e3..8f75dc9a9be 100644
--- a/content/canvas/test/test_canvas.html
+++ b/content/canvas/test/test_canvas.html
@@ -2826,14 +2826,14 @@ ctx.drawImage(document.getElementById('rgrg-256x256_2.png'), 0, 0, 256, 256, 0,
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 51, 26);
ctx.fillRect(49, 24, 51, 26);
-isPixel(ctx, 0,0, 0,255,0,255, 2);
-isPixel(ctx, 99,0, 0,255,0,255, 2);
-isPixel(ctx, 0,49, 0,255,0,255, 2);
-isPixel(ctx, 99,49, 0,255,0,255, 2);
-isPixel(ctx, 20,20, 0,255,0,255, 2);
-isPixel(ctx, 80,20, 0,255,0,255, 2);
-isPixel(ctx, 20,30, 0,255,0,255, 2);
-isPixel(ctx, 80,30, 0,255,0,255, 2);
+isPixel(ctx, 0,0, 0,255,0,255, 3);
+isPixel(ctx, 99,0, 0,255,0,255, 3);
+isPixel(ctx, 0,49, 0,255,0,255, 3);
+isPixel(ctx, 99,49, 0,255,0,255, 3);
+isPixel(ctx, 20,20, 0,255,0,255, 3);
+isPixel(ctx, 80,20, 0,255,0,255, 3);
+isPixel(ctx, 20,30, 0,255,0,255, 3);
+isPixel(ctx, 80,30, 0,255,0,255, 3);
}
diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list
index dfaf2d0cc49..7791fd7683f 100644
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1490,7 +1490,7 @@ skip-if(B2G) fuzzy-if(Android&&AndroidVersion>=15,12,300) == 551463-1.html 55146
# 553571 depends on MS Indic shaping behavior and Win7 font support;
# not expected to be reliable on XP or non-Windows platforms
random-if(!winWidget) random-if(/^Windows\x20NT\x205/.test(http.oscpu)) != 553571-1.html 553571-1-notref.html # expect dotted circle in test, not in ref
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,91) random-if(d2d) == 555388-1.html 555388-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,91) random-if(d2d) skip-if(azureSkiaGL) == 555388-1.html 555388-1-ref.html
== 556661-1.html 556661-1-ref.html
skip-if(B2G) fails-if(Android) == 557087-1.html 557087-ref.html
skip-if(B2G) fails-if(Android) == 557087-2.html 557087-ref.html
@@ -1676,7 +1676,7 @@ skip-if(B2G) == 665597-1.html 665597-1-ref.html
skip-if(B2G) == 665597-2.html 665597-2-ref.html
== 668319-1.xul about:blank
!= 669015-1.xul 669015-1-notref.xul
-== 670442-1.html 670442-1-ref.html
+fuzzy-if(azureSkiaGL,14,2000) == 670442-1.html 670442-1-ref.html
== 670467-1.html 670467-1-ref.html
== 670467-2.html 670467-2-ref.html
== 690164-1.html 690164-1-ref.html
diff --git a/layout/reftests/canvas/reftest.list b/layout/reftests/canvas/reftest.list
index 90c47cf9f02..e676602b1a2 100644
--- a/layout/reftests/canvas/reftest.list
+++ b/layout/reftests/canvas/reftest.list
@@ -37,7 +37,7 @@ skip-if(B2G) asserts-if(cocoaWidget,0-2) == size-change-1.html size-change-1-ref
== text-no-frame-test.html text-no-frame-ref.html
== text-no-frame-2-test.html text-not-in-doc-ref.html
-== text-not-in-doc-test.html text-not-in-doc-ref.html
+fuzzy-if(azureSkiaGL,10,400) == text-not-in-doc-test.html text-not-in-doc-ref.html
== text-bidi-ltr-test.html text-bidi-ltr-ref.html
!= text-bidi-ltr-test.html text-bidi-ltr-notref.html # for bug 698185
@@ -62,10 +62,10 @@ random-if(!cocoaWidget||OSX==10.6||OSX==10.7) != text-emoji.html text-emoji-notr
# azure quartz uses CGDrawLinearGradient instead of DrawShading
# so we have less control over degenerate behaviour as tested by this
# test
-fails-if(azureQuartz) == linear-gradient-1a.html linear-gradient-1-ref.html
+fuzzy-if(azureSkiaGL,256,601) fails-if(azureQuartz) == linear-gradient-1a.html linear-gradient-1-ref.html
# this passes with cairo on 10.7 and 10.8 but not with azure for reasons unknown
-fails-if(OSX==10.6||(azureQuartz&&(OSX==10.7||OSX==10.8))) == linear-gradient-1b.html linear-gradient-1-ref.html
+fails-if(azureSkiaGL||OSX==10.6||(azureQuartz&&(OSX==10.7||OSX==10.8))) == linear-gradient-1b.html linear-gradient-1-ref.html
== zero-dimensions.html zero-dimensions-ref.html
diff --git a/layout/reftests/css-gradients/reftest.list b/layout/reftests/css-gradients/reftest.list
index 082828af953..eb6a790b0e4 100644
--- a/layout/reftests/css-gradients/reftest.list
+++ b/layout/reftests/css-gradients/reftest.list
@@ -1,9 +1,9 @@
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) == linear-1a.html linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) == linear-1b.html linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) == linear-keywords-1a.html linear-keywords-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) == linear-keywords-1b.html linear-keywords-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) == linear-1a.html linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) == linear-1b.html linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) == linear-keywords-1a.html linear-keywords-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) == linear-keywords-1b.html linear-keywords-1-ref.html
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) == linear-percent.html linear-percent-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,92400) == linear-mix.html linear-mix-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,92400) fuzzy-if(azureSkiaGL,2,143400) == linear-mix.html linear-mix-ref.html
== linear-diagonal-1a.html linear-diagonal-1-ref.html
== linear-diagonal-1b.html linear-diagonal-1-ref.html
== linear-diagonal-1c.html linear-diagonal-1-ref.html
@@ -38,11 +38,11 @@ fails-if(d2d) == linear-repeat-1g.html linear-repeat-1-ref.html # bug 582236
== linear-stops-1d.html linear-stops-1-ref.html
== linear-stops-1e.html linear-stops-1-ref.html
== linear-stops-1f.html linear-stops-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1a.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1b.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1c.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1d.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1e.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) == linear-vertical-1a.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) == linear-vertical-1b.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) == linear-vertical-1c.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) == linear-vertical-1d.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) == linear-vertical-1e.html linear-vertical-1-ref.html
== linear-vertical-subpixel-1.html linear-vertical-subpixel-1-ref.html
== linear-viewport.html linear-viewport-ref.html
== linear-zero-length-1a.html linear-zero-length-1-ref.html
@@ -50,15 +50,15 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) == linear-vertical-1e.html line
== linear-zero-length-1c.html linear-zero-length-1-ref.html
== nostops.html about:blank
== onestop.html about:blank
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) random-if(d2d) == radial-1a.html radial-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) random-if(d2d) == radial-1b.html radial-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) random-if(d2d) == radial-1c.html radial-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2a.html radial-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2b.html radial-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2c.html radial-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2d.html radial-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2e.html radial-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) == radial-2f.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1a.html radial-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1b.html radial-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,51018) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1c.html radial-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2a.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2b.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2c.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2d.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2e.html radial-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,7860) fuzzy-if(azureSkiaGL,2,90000) == radial-2f.html radial-2-ref.html
== radial-position-1a.html radial-position-1-ref.html
== radial-position-1b.html radial-position-1-ref.html
== radial-shape-closest-corner-1a.html radial-shape-closest-corner-1-ref.html
@@ -105,23 +105,23 @@ fails-if(OSX==10.6) == twostops-1c.html twostops-1-ref.html # bug 524173
== twostops-1g.html twostops-1-ref.html
# from http://www.xanthir.com/:4bhipd by way of http://a-ja.net/newgrad.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1a.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1a.html aja-linear-1-ref.html
fails-if(!d2d) == aja-linear-1b.html aja-linear-1-ref.html # bug 526694
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1c.html aja-linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1d.html aja-linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1e.html aja-linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1f.html aja-linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-1g.html aja-linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-2a.html aja-linear-2-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) == aja-linear-2b.html aja-linear-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1c.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1d.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1e.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1f.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-1g.html aja-linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-2a.html aja-linear-2-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-2b.html aja-linear-2-ref.html
fails == aja-linear-2c.html aja-linear-2-ref.html # bug 522607
fails-if(!d2d) == aja-linear-2d.html aja-linear-2-ref.html # bug 526694
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) == aja-linear-3a.html aja-linear-3-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) == aja-linear-3b.html aja-linear-3-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) == aja-linear-4a.html aja-linear-4-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) == aja-linear-4b.html aja-linear-4-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) == aja-linear-5a.html aja-linear-5-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,16477) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-3a.html aja-linear-3-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-3b.html aja-linear-3-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-4a.html aja-linear-4-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-4b.html aja-linear-4-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-5a.html aja-linear-5-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,16477) fuzzy-if(azureSkiaGL,8,20000) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708
fails == aja-linear-6b.html aja-linear-6-ref.html # bug 522607
skip-if(B2G) == height-dependence-1.html height-dependence-1-ref.html
skip-if(B2G) fuzzy-if(cocoaWidget,1,40000) == height-dependence-2.html height-dependence-2-ref.html
diff --git a/layout/reftests/image-element/reftest.list b/layout/reftests/image-element/reftest.list
index e0e8f86e30e..15f3c0a275f 100644
--- a/layout/reftests/image-element/reftest.list
+++ b/layout/reftests/image-element/reftest.list
@@ -5,7 +5,7 @@ fails-if(Android) == canvas-outside-document.html canvas-inside-document.html
skip-if(B2G) == mozsetimageelement-02.html about:blank # bug 773482
skip-if(B2G) == image-outside-document-invalidate.html about:blank # bug 773482
skip-if(B2G) == canvas-outside-document-invalidate-01.html about:blank # bug 773482
-skip-if(B2G) fails-if(azureSkia&&winWidget) fails-if(cocoaWidget) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800 # bug 773482
+skip-if(B2G) fails-if(azureSkia) fails-if(cocoaWidget) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800 # bug 773482
#fails with Skia due to Skia bug http://code.google.com/p/skia/issues/detail?id=568
== element-paint-simple.html element-paint-simple-ref.html
== element-paint-repeated.html element-paint-repeated-ref.html
diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list
index d9334cd7614..335fa320fe6 100644
--- a/layout/reftests/svg/reftest.list
+++ b/layout/reftests/svg/reftest.list
@@ -199,7 +199,7 @@ pref(layout.css.masking.enabled,true) fuzzy-if(d2d,1,6400) == mask-type-04.svg m
== nested-viewBox-01.svg pass.svg
== nesting-invalid-01.svg nesting-invalid-01-ref.svg
== non-scaling-stroke-01.svg non-scaling-stroke-01-ref.svg
-fuzzy-if(Android,1,99) fuzzy-if(!contentSameGfxBackendAsCanvas,1,99) == non-scaling-stroke-02.svg non-scaling-stroke-02-ref.svg
+fuzzy-if(Android,1,99) fuzzy-if(!contentSameGfxBackendAsCanvas,9,99) == non-scaling-stroke-02.svg non-scaling-stroke-02-ref.svg
== non-scaling-stroke-03.svg non-scaling-stroke-03-ref.svg
== objectBoundingBox-and-clipPath.svg pass.svg
# Bug 588684
diff --git a/layout/tools/reftest/reftest.js b/layout/tools/reftest/reftest.js
index 5fcce2bf41c..33835df9e5b 100644
--- a/layout/tools/reftest/reftest.js
+++ b/layout/tools/reftest/reftest.js
@@ -543,6 +543,7 @@ function BuildConditionSandbox(aURL) {
sandbox.d2d = false;
sandbox.azureQuartz = false;
sandbox.azureSkia = false;
+ sandbox.azureSkiaGL = false;
sandbox.contentSameGfxBackendAsCanvas = false;
#else
var gfxInfo = (NS_GFXINFO_CONTRACTID in CC) && CC[NS_GFXINFO_CONTRACTID].getService(CI.nsIGfxInfo);
@@ -554,6 +555,7 @@ function BuildConditionSandbox(aURL) {
var info = gfxInfo.getInfo();
sandbox.azureQuartz = info.AzureCanvasBackend == "quartz";
sandbox.azureSkia = info.AzureCanvasBackend == "skia";
+ sandbox.azureSkiaGL = info.AzureSkiaAccelerated; // FIXME: assumes GL right now
// true if we are using the same Azure backend for rendering canvas and content
sandbox.contentSameGfxBackendAsCanvas = info.AzureContentBackend == info.AzureCanvasBackend
|| (info.AzureContentBackend == "none" && info.AzureCanvasBackend == "cairo");