[cairo-commit] 3 commits - test/alpha-similar.c test/alpha-similar.pdf.argb32.xfail.png test/alpha-similar.pdf.rgb24.xfail.png test/alpha-similar.ps.argb32.xfail.png test/alpha-similar.ps.rgb24.xfail.png test/alpha-similar.svg.argb32.xfail.png test/alpha-similar.svg.rgb24.xfail.png test/big-line.c test/big-line.ps2.ref.png test/big-line.ps2.rgb24.ref.png test/big-line.ps3.ref.png test/big-line.ps3.rgb24.ref.png test/big-line.ps.argb32.ref.png test/big-line.ps.rgb24.ref.png test/big-line.ref.png test/big-line.rgb24.ref.png test/big-trap.c test/cairo-test.c test/cairo-test.h test/cairo-test-runner.c test/caps-joins-alpha.svg11.ref.png test/caps-joins-alpha.svg12.ref.png test/clip-fill-rule.test-fallback.rgb24.ref.png test/clip-nesting.test-fallback.rgb24.ref.png test/clip-operator.c test/clip-operator.pdf.argb32.ref.png test/clip-operator.pdf.argb32.xfail.png test/clip-operator.pdf.rgb24.ref.png test/clip-operator.pdf.rgb24.xfail.png test/clip-operator.svg12.argb32.xfail.png test/clip-operator.svg12.rgb24.xfail.png test/clip-operator.test-fallback.argb32.ref.png test/clip-operator.test-fallback.rgb24.ref.png test/clip-twice.test-fallback.argb32.ref.png test/clip-twice.test-fallback.rgb24.ref.png test/close-path-current-point.ps.ref.png test/composite-integer-translate-source.c test/degenerate-arc.test-fallback.argb32.ref.png test/degenerate-arc.test-fallback.rgb24.ref.png test/degenerate-dash.c test/degenerate-dash.ps.xfail.png test/degenerate-path.c test/degenerate-path.ps2.argb32.ref.png test/degenerate-path.ps2.rgb24.ref.png test/degenerate-path.ps3.argb32.ref.png test/degenerate-path.ps3.rgb24.ref.png test/degenerate-path.ps.argb32.xfail.png test/degenerate-path.ps.rgb24.xfail.png test/device-offset-scale.c test/device-offset-scale.svg.xfail.png test/extend-pad-border.c test/extend-pad-border.ps.ref.png test/extend-pad-border.svg.xfail.png test/extend-pad.ps.ref.png test/extend-pad-similar.svg.xfail.png test/extend-pad.svg.xfail.png test/fallback-resolution.c test/fill-alpha-pattern.pdf.argb32.ref.png test/fill-alpha-pattern.pdf.rgb24.ref.png test/fill-alpha-pattern.test-fallback.argb32.ref.png test/fill-alpha-pattern.test-fallback.rgb24.ref.png test/fill-alpha.test-fallback.argb32.ref.png test/fill-alpha.test-fallback.rgb24.ref.png test/fill-and-stroke-alpha-add.c test/fill-and-stroke-alpha-add.svg12.xfail.png test/fill-degenerate-sort-order.c test/fill-degenerate-sort-order.ps.argb32.xfail.png test/fill-degenerate-sort-order.ps.rgb24.xfail.png test/fill-degenerate-sort-order.test-fallback.argb32.ref.png test/fill-degenerate-sort-order.test-fallback.rgb24.ref.png test/fill-image.ps.ref.png test/fill-image.test-fallback.ref.png test/fill-image.xlib.ref.png test/fill-rule.test-fallback.argb32.ref.png test/fill-rule.test-fallback.rgb24.ref.png test/filter-bilinear-extents.pdf.ref.png test/filter-bilinear-extents.pdf.xfail.png test/filter-nearest-offset.pdf.ref.png test/filter-nearest-offset.pdf.xfail.png test/filter-nearest-offset.svg11.ref.png test/filter-nearest-offset.svg12.ref.png test/filter-nearest-offset.svg.xfail.png test/filter-nearest-transformed.pdf.ref.png test/filter-nearest-transformed.pdf.xfail.png test/filter-nearest-transformed.svg11.ref.png test/filter-nearest-transformed.svg12.ref.png test/filter-nearest-transformed.svg.xfail.png test/finer-grained-fallbacks.c test/finer-grained-fallbacks.svg12.argb32.ref.png test/finer-grained-fallbacks.svg12.rgb24.ref.png test/finer-grained-fallbacks.test-fallback.argb32.ref.png test/finer-grained-fallbacks.test-fallback.rgb24.ref.png test/font-matrix-translation.svg11.argb32.ref.png test/font-matrix-translation.svg11.ref.png test/font-matrix-translation.svg11.rgb24.ref.png test/font-matrix-translation.svg12.argb32.ref.png test/font-matrix-translation.svg12.ref.png test/font-matrix-translation.svg12.rgb24.ref.png test/font-matrix-translation.svg.ref.png test/ft-show-glyphs-positioning.svg11.ref.png test/ft-show-glyphs-positioning.svg12.ref.png test/ft-show-glyphs-positioning.svg.ref.png test/ft-show-glyphs-table.svg11.argb32.ref.png test/ft-show-glyphs-table.svg11.rgb24.ref.png test/ft-show-glyphs-table.svg12.argb32.ref.png test/ft-show-glyphs-table.svg12.rgb24.ref.png test/ft-show-glyphs-table.svg.ref.png test/ft-text-vertical-layout-type1.svg11.argb32.ref.png test/ft-text-vertical-layout-type1.svg11.ref.png test/ft-text-vertical-layout-type1.svg11.rgb24.ref.png test/ft-text-vertical-layout-type1.svg12.argb32.ref.png test/ft-text-vertical-layout-type1.svg12.ref.png test/ft-text-vertical-layout-type1.svg12.rgb24.ref.png test/ft-text-vertical-layout-type1.svg.ref.png test/ft-text-vertical-layout-type1.test-fallback.argb32.ref.png test/ft-text-vertical-layout-type1.test-fallback.rgb24.ref.png test/ft-text-vertical-layout-type3.svg11.argb32.ref.png test/ft-text-vertical-layout-type3.svg11.ref.png test/ft-text-vertical-layout-type3.svg11.rgb24.ref.png test/ft-text-vertical-layout-type3.svg12.argb32.ref.png test/ft-text-vertical-layout-type3.svg12.ref.png test/ft-text-vertical-layout-type3.svg12.rgb24.ref.png test/ft-text-vertical-layout-type3.svg.ref.png test/ft-text-vertical-layout-type3.test-fallback.argb32.ref.png test/ft-text-vertical-layout-type3.test-fallback.rgb24.ref.png test/gradient-alpha.pdf.argb32.ref.png test/gradient-alpha.pdf.rgb24.ref.png test/gradient-constant-alpha.pdf.argb32.ref.png test/gradient-constant-alpha.pdf.rgb24.ref.png test/group-unaligned.pdf.new.png test/group-unaligned.pdf.ref.png test/group-unaligned.ref.png test/group-unaligned.svg.argb32.ref.png test/group-unaligned.svg.argb32.xfail.png test/group-unaligned.svg.rgb24.ref.png test/group-unaligned.svg.rgb24.xfail.png test/huge-linear.c test/huge-linear.pdf.ref.png test/huge-radial.c test/huge-radial.pdf.argb32.ref.png test/huge-radial.pdf.rgb24.ref.png test/large-source-roi.c test/large-source-roi.ref.png test/linear-gradient.pdf.ref.png test/linear-gradient.svg11.argb32.ref.png test/linear-gradient.svg11.ref.png test/linear-gradient.svg11.rgb24.ref.png test/linear-gradient.svg12.argb32.ref.png test/linear-gradient.svg12.ref.png test/linear-gradient.svg12.rgb24.ref.png test/linear-gradient.test-fallback.argb32.ref.png test/linear-gradient.test-fallback.rgb24.ref.png test/long-lines.c test/long-lines.ref.png test/Makefile.am test/make-html.pl test/mask-alpha.svg11.argb32.ref.png test/mask-alpha.svg11.rgb24.ref.png test/mask-alpha.svg12.argb32.ref.png test/mask-alpha.svg12.rgb24.ref.png test/mask-alpha.svg.rgb24.xfail.png test/mask-alpha.test-fallback.argb32.ref.png test/mask-ctm.svg11.argb32.ref.png test/mask-ctm.svg12.argb32.ref.png test/mask-glyphs.c test/mask-glyphs.pdf.ref.png test/mask-glyphs.svg.ref.png test/mask.pdf.argb32.ref.png test/mask.pdf.argb32.xfail.png test/mask.pdf.rgb24.ref.png test/mask.pdf.rgb24.xfail.png test/mask-surface-ctm.svg11.argb32.ref.png test/mask-surface-ctm.svg12.argb32.ref.png test/mask.svg11.argb32.ref.png test/mask.svg11.rgb24.ref.png test/mask.svg12.argb32.ref.png test/mask.svg12.rgb24.ref.png test/mask.svg.argb32.xfail.png test/mask.svg.rgb24.xfail.png test/mask.test-fallback.argb32.ref.png test/mask.test-fallback.rgb24.ref.png test/mask-transformed-similar.svg11.ref.png test/mask-transformed-similar.svg12.ref.png test/mask-transformed-similar.svg.ref.png test/meta-surface-pattern.pdf.argb32.ref.png test/meta-surface-pattern.pdf.ref.png test/meta-surface-pattern.pdf.rgb24.ref.png test/meta-surface-pattern.svg11.argb32.ref.png test/meta-surface-pattern.svg11.rgb24.ref.png test/meta-surface-pattern.svg12.argb32.ref.png test/meta-surface-pattern.svg12.rgb24.ref.png test/meta-surface-pattern.svg.argb32.ref.png test/meta-surface-pattern.svg.rgb24.ref.png test/operator-alpha.c test/operator-alpha.svg12.argb32.xfail.png test/operator-alpha.svg12.rgb24.xfail.png test/operator.c test/operator-clear.c test/operator-clear.pdf.argb32.ref.png test/operator-clear.pdf.rgb24.ref.png test/operator-clear.svg12.argb32.xfail.png test/operator-clear.svg12.rgb24.xfail.png test/operator-clear.test-fallback.ref.png test/operator-clear.xlib.ref.png test/operator-source.c test/operator-source.pdf.argb32.ref.png test/operator-source.pdf.rgb24.ref.png test/operator-source.pdf.rgb24.xfail.png test/operator-source.svg12.argb32.xfail.png test/operator-source.svg12.rgb24.xfail.png test/operator-source.test-fallback.argb32.ref.png test/operator-source.test-fallback.rgb24.ref.png test/operator.svg12.argb32.xfail.png test/operator.svg12.rgb24.xfail.png test/over-above-source.c test/over-above-source.svg12.rgb24.xfail.png test/over-above-source.test-fallback.argb32.ref.png test/over-above-source.test-fallback.rgb24.ref.png test/over-around-source.c test/over-around-source.svg12.argb32.xfail.png test/over-around-source.svg12.rgb24.xfail.png test/over-around-source.test-fallback.argb32.ref.png test/over-below-source.c test/over-below-source.svg12.argb32.xfail.png test/over-below-source.svg12.rgb24.xfail.png test/over-between-source.c test/over-between-source.svg12.argb32.xfail.png test/over-between-source.svg12.rgb24.xfail.png test/over-between-source.test-fallback.argb32.ref.png test/paint-source-alpha.c test/paint-source-alpha.svg11.ref.png test/paint-source-alpha.svg12.ref.png test/paint-source-alpha.svg.ref.png test/paint-with-alpha.svg11.ref.png test/paint-with-alpha.svg12.ref.png test/paint-with-alpha.svg.ref.png test/path-precision.c test/push-group.svg11.argb32.ref.png test/push-group.svg12.argb32.ref.png test/push-group.test-fallback.argb32.ref.png test/push-group.test-fallback.rgb24.ref.png test/radial-gradient.svg11.ref.png test/radial-gradient.svg12.ref.png test/random-intersections.test-fallback.argb32.ref.png test/random-intersections.test-fallback.rgb24.ref.png test/README test/rotate-image-surface-paint.pdf.ref.png test/rotate-image-surface-paint.pdf.xfail.png test/rotate-image-surface-paint.svg11.ref.png test/rotate-image-surface-paint.svg12.ref.png test/rotate-image-surface-paint.svg.ref.png test/scale-offset-image.c test/scale-offset-image.pdf.argb32.ref.png test/scale-offset-image.pdf.rgb24.ref.png test/scale-offset-image.xfail.png test/scale-offset-image.xlib.xfail.png test/scale-offset-similar.c test/scale-offset-similar.pdf.argb32.ref.png test/scale-offset-similar.pdf.rgb24.ref.png test/scale-offset-similar.xfail.png test/scale-offset-similar.xlib.xfail.png test/scale-source-surface-paint.svg11.argb32.ref.png test/scale-source-surface-paint.svg11.rgb24.ref.png test/scale-source-surface-paint.svg12.argb32.ref.png test/scale-source-surface-paint.svg12.rgb24.ref.png test/scale-source-surface-paint.svg.argb32.xfail.png test/scale-source-surface-paint.svg.rgb24.xfail.png test/self-copy-overlap.c test/self-copy-overlap.ref.png test/self-copy-overlap.rgb24.ref.png test/self-intersecting.argb32.xfail.png test/self-intersecting.c test/self-intersecting.pdf.argb32.xfail.png test/self-intersecting.pdf.rgb24.xfail.png test/self-intersecting.ps.argb32.xfail.png test/self-intersecting.ps.rgb24.xfail.png test/self-intersecting.rgb24.xfail.png test/self-intersecting.xlib.argb32.xfail.png test/self-intersecting.xlib.rgb24.xfail.png test/set-source.svg11.argb32.ref.png test/set-source.svg12.argb32.ref.png test/smask.c test/smask-fill.c test/smask-fill.svg11.argb32.ref.png test/smask-fill.svg11.ref.png test/smask-fill.svg11.rgb24.ref.png test/smask-fill.svg12.argb32.ref.png test/smask-fill.svg12.ref.png test/smask-fill.svg12.rgb24.ref.png test/smask-fill.svg.ref.png test/smask-fill.test-fallback.argb32.ref.png test/smask-fill.test-fallback.rgb24.ref.png test/smask-image-mask.c test/smask-mask.c test/smask-mask.pdf.xfail.png test/smask-mask.svg11.ref.png test/smask-mask.svg12.ref.png test/smask-mask.svg.ref.png test/smask-paint.c test/smask-paint.pdf.xfail.png test/smask-paint.svg11.ref.png test/smask-paint.svg12.ref.png test/smask-paint.svg.ref.png test/smask.pdf.xfail.png test/smask.ref.png test/smask-stroke.c test/smask-stroke.pdf.xfail.png test/smask.svg11.ref.png test/smask.svg12.ref.png test/smask.svg.ref.png test/smask-text.c test/smask-text.pdf.ref.png test/smask-text.ref.png test/smask-text.svg11.argb32.ref.png test/smask-text.svg11.ref.png test/smask-text.svg11.rgb24.ref.png test/smask-text.svg12.argb32.ref.png test/smask-text.svg12.ref.png test/smask-text.svg12.rgb24.ref.png test/smask-text.svg.ref.png test/source-clip-scale.svg11.ref.png test/source-clip-scale.svg12.ref.png test/source-clip-scale.svg.ref.png test/surface-pattern-big-scale-down.c test/surface-pattern-big-scale-down.ref.png test/surface-pattern.pdf.ref.png test/surface-pattern.pdf.xfail.png test/surface-pattern.ps2.ref.png test/surface-pattern.ps3.ref.png test/surface-pattern.ps.xfail.png test/surface-pattern-scale-down.pdf.argb32.ref.png test/surface-pattern-scale-down.pdf.ref.png test/surface-pattern-scale-down.pdf.rgb24.ref.png test/surface-pattern-scale-up.pdf.argb32.ref.png test/surface-pattern-scale-up.pdf.ref.png test/surface-pattern-scale-up.pdf.rgb24.ref.png test/surface-pattern.svg.ref.png test/surface-pattern.svg.xfail.png test/test-fallback16-surface-source.ps.ref.png test/text-pattern.pdf.argb32.ref.png test/text-pattern.pdf.argb32.xfail.png test/text-pattern.pdf.rgb24.ref.png test/text-pattern.pdf.rgb24.xfail.png test/text-pattern.svg11.argb32.ref.png test/text-pattern.svg11.rgb24.ref.png test/text-pattern.svg12.argb32.ref.png test/text-pattern.svg12.rgb24.ref.png test/text-pattern.svg.argb32.ref.png test/text-pattern.svg.rgb24.ref.png test/text-rotate.svg11.argb32.ref.png test/text-rotate.svg11.ref.png test/text-rotate.svg11.rgb24.ref.png test/text-rotate.svg12.argb32.ref.png test/text-rotate.svg12.ref.png test/text-rotate.svg12.rgb24.ref.png test/text-rotate.svg.ref.png test/text-transform.svg11.argb32.ref.png test/text-transform.svg11.rgb24.ref.png test/text-transform.svg12.argb32.ref.png test/text-transform.svg12.rgb24.ref.png test/text-transform.svg.ref.png test/trap-clip.pdf.argb32.ref.png test/trap-clip.pdf.rgb24.ref.png test/trap-clip.test-fallback.argb32.ref.png test/trap-clip.test-fallback.rgb24.ref.png test/twin.svg.ref.png test/unbounded-operator.c test/unbounded-operator.svg12.argb32.xfail.png test/unbounded-operator.svg12.rgb24.xfail.png test/unbounded-operator.test-fallback.rgb24.ref.png test/user-font-mask.svg11.ref.png test/user-font-mask.svg.ref.png test/user-font-proxy.ps2.ref.png test/user-font-proxy.ps3.ref.png test/user-font-proxy.ps.ref.png test/user-font-proxy.svg11.argb32.ref.png test/user-font-proxy.svg11.ref.png test/user-font-proxy.svg11.rgb24.ref.png test/user-font-proxy.svg12.argb32.ref.png test/user-font-proxy.svg12.ref.png test/user-font-proxy.svg12.rgb24.ref.png test/user-font-proxy.svg.ref.png test/user-font-proxy.test-fallback.argb32.ref.png test/user-font-proxy.test-fallback.rgb24.ref.png test/user-font-rescale.svg11.ref.png test/user-font-rescale.svg12.ref.png test/user-font-rescale.svg.ref.png test/user-font.svg11.argb32.ref.png test/user-font.svg11.ref.png test/user-font.svg11.rgb24.ref.png test/user-font.svg12.argb32.ref.png test/user-font.svg12.ref.png test/user-font.svg12.rgb24.ref.png test/user-font.svg.ref.png test/user-font.test-fallback.argb32.ref.png test/user-font.test-fallback.rgb24.ref.png

Chris Wilson ickle at kemper.freedesktop.org
Mon Jul 13 07:23:50 PDT 2009


 dev/null                                             |binary
 test/Makefile.am                                     |   13 
 test/README                                          |    2 
 test/alpha-similar.c                                 |    2 
 test/alpha-similar.pdf.argb32.xfail.png              |binary
 test/alpha-similar.pdf.rgb24.xfail.png               |binary
 test/alpha-similar.ps.argb32.xfail.png               |binary
 test/alpha-similar.ps.rgb24.xfail.png                |binary
 test/alpha-similar.svg.argb32.xfail.png              |binary
 test/alpha-similar.svg.rgb24.xfail.png               |binary
 test/big-line.c                                      |    2 
 test/big-line.ps.argb32.ref.png                      |binary
 test/big-line.ps.rgb24.ref.png                       |binary
 test/big-trap.c                                      |    7 
 test/cairo-test-runner.c                             |  161 +------
 test/cairo-test.c                                    |  405 +++++++++++++------
 test/cairo-test.h                                    |   56 ++
 test/clip-operator.c                                 |    2 
 test/clip-operator.pdf.argb32.xfail.png              |binary
 test/clip-operator.pdf.rgb24.xfail.png               |binary
 test/clip-operator.svg12.argb32.xfail.png            |binary
 test/clip-operator.svg12.rgb24.xfail.png             |binary
 test/close-path-current-point.ps.ref.png             |binary
 test/composite-integer-translate-source.c            |    2 
 test/degenerate-dash.c                               |    2 
 test/degenerate-dash.ps.xfail.png                    |binary
 test/degenerate-path.c                               |    2 
 test/degenerate-path.ps.argb32.xfail.png             |binary
 test/degenerate-path.ps.rgb24.xfail.png              |binary
 test/device-offset-scale.c                           |    2 
 test/device-offset-scale.svg.xfail.png               |binary
 test/extend-pad-border.c                             |    2 
 test/extend-pad-border.ps.ref.png                    |binary
 test/extend-pad-border.svg.xfail.png                 |binary
 test/extend-pad-similar.svg.xfail.png                |binary
 test/extend-pad.ps.ref.png                           |binary
 test/extend-pad.svg.xfail.png                        |binary
 test/fallback-resolution.c                           |   14 
 test/fill-and-stroke-alpha-add.c                     |    2 
 test/fill-and-stroke-alpha-add.svg12.xfail.png       |binary
 test/fill-degenerate-sort-order.c                    |    2 
 test/fill-degenerate-sort-order.ps.argb32.xfail.png  |binary
 test/fill-degenerate-sort-order.ps.rgb24.xfail.png   |binary
 test/fill-image.ps.ref.png                           |binary
 test/fill-image.xlib.ref.png                         |binary
 test/filter-bilinear-extents.pdf.xfail.png           |binary
 test/filter-nearest-offset.pdf.xfail.png             |binary
 test/filter-nearest-offset.svg.xfail.png             |binary
 test/filter-nearest-transformed.pdf.xfail.png        |binary
 test/filter-nearest-transformed.svg.xfail.png        |binary
 test/finer-grained-fallbacks.c                       |    2 
 test/finer-grained-fallbacks.svg12.argb32.ref.png    |binary
 test/finer-grained-fallbacks.svg12.rgb24.ref.png     |binary
 test/font-matrix-translation.svg.ref.png             |binary
 test/ft-show-glyphs-positioning.svg.ref.png          |binary
 test/ft-show-glyphs-table.svg.ref.png                |binary
 test/ft-text-vertical-layout-type1.svg.ref.png       |binary
 test/ft-text-vertical-layout-type3.svg.ref.png       |binary
 test/group-unaligned.pdf.new.png                     |binary
 test/group-unaligned.ref.png                         |binary
 test/group-unaligned.svg.argb32.xfail.png            |binary
 test/group-unaligned.svg.rgb24.xfail.png             |binary
 test/huge-linear.c                                   |    2 
 test/huge-linear.pdf.ref.png                         |binary
 test/huge-radial.c                                   |    2 
 test/huge-radial.pdf.argb32.ref.png                  |binary
 test/huge-radial.pdf.rgb24.ref.png                   |binary
 test/large-source-roi.c                              |    2 
 test/long-lines.c                                    |    2 
 test/make-html.pl                                    |   13 
 test/mask-alpha.svg.rgb24.xfail.png                  |binary
 test/mask-glyphs.c                                   |    2 
 test/mask-glyphs.pdf.ref.png                         |binary
 test/mask-glyphs.svg.ref.png                         |binary
 test/mask-transformed-similar.svg.ref.png            |binary
 test/mask.pdf.argb32.xfail.png                       |binary
 test/mask.pdf.rgb24.xfail.png                        |binary
 test/mask.svg.argb32.xfail.png                       |binary
 test/mask.svg.rgb24.xfail.png                        |binary
 test/meta-surface-pattern.pdf.argb32.ref.png         |binary
 test/meta-surface-pattern.pdf.rgb24.ref.png          |binary
 test/meta-surface-pattern.svg.argb32.ref.png         |binary
 test/meta-surface-pattern.svg.rgb24.ref.png          |binary
 test/operator-alpha.c                                |    2 
 test/operator-alpha.svg12.argb32.xfail.png           |binary
 test/operator-alpha.svg12.rgb24.xfail.png            |binary
 test/operator-clear.c                                |    2 
 test/operator-clear.svg12.argb32.xfail.png           |binary
 test/operator-clear.svg12.rgb24.xfail.png            |binary
 test/operator-clear.xlib.ref.png                     |binary
 test/operator-source.c                               |    2 
 test/operator-source.pdf.rgb24.xfail.png             |binary
 test/operator-source.svg12.argb32.xfail.png          |binary
 test/operator-source.svg12.rgb24.xfail.png           |binary
 test/operator.c                                      |    2 
 test/operator.svg12.argb32.xfail.png                 |binary
 test/operator.svg12.rgb24.xfail.png                  |binary
 test/over-above-source.c                             |    2 
 test/over-above-source.svg12.rgb24.xfail.png         |binary
 test/over-around-source.c                            |    2 
 test/over-around-source.svg12.argb32.xfail.png       |binary
 test/over-around-source.svg12.rgb24.xfail.png        |binary
 test/over-below-source.c                             |    2 
 test/over-below-source.svg12.argb32.xfail.png        |binary
 test/over-below-source.svg12.rgb24.xfail.png         |binary
 test/over-between-source.c                           |    2 
 test/over-between-source.svg12.argb32.xfail.png      |binary
 test/over-between-source.svg12.rgb24.xfail.png       |binary
 test/paint-source-alpha.c                            |    2 
 test/paint-source-alpha.svg.ref.png                  |binary
 test/paint-with-alpha.svg.ref.png                    |binary
 test/path-precision.c                                |    9 
 test/rotate-image-surface-paint.pdf.xfail.png        |binary
 test/rotate-image-surface-paint.svg.ref.png          |binary
 test/scale-offset-image.c                            |    2 
 test/scale-offset-image.pdf.argb32.ref.png           |binary
 test/scale-offset-image.pdf.rgb24.ref.png            |binary
 test/scale-offset-image.xfail.png                    |binary
 test/scale-offset-image.xlib.xfail.png               |binary
 test/scale-offset-similar.c                          |    2 
 test/scale-offset-similar.pdf.argb32.ref.png         |binary
 test/scale-offset-similar.pdf.rgb24.ref.png          |binary
 test/scale-offset-similar.xfail.png                  |binary
 test/scale-offset-similar.xlib.xfail.png             |binary
 test/scale-source-surface-paint.svg.argb32.xfail.png |binary
 test/scale-source-surface-paint.svg.rgb24.xfail.png  |binary
 test/self-copy-overlap.c                             |    2 
 test/self-intersecting.argb32.xfail.png              |binary
 test/self-intersecting.c                             |    2 
 test/self-intersecting.pdf.argb32.xfail.png          |binary
 test/self-intersecting.pdf.rgb24.xfail.png           |binary
 test/self-intersecting.ps.argb32.xfail.png           |binary
 test/self-intersecting.ps.rgb24.xfail.png            |binary
 test/self-intersecting.rgb24.xfail.png               |binary
 test/self-intersecting.xlib.argb32.xfail.png         |binary
 test/self-intersecting.xlib.rgb24.xfail.png          |binary
 test/smask-fill.c                                    |    2 
 test/smask-fill.svg.ref.png                          |binary
 test/smask-image-mask.c                              |    2 
 test/smask-mask.c                                    |    2 
 test/smask-mask.pdf.xfail.png                        |binary
 test/smask-mask.svg.ref.png                          |binary
 test/smask-paint.c                                   |    2 
 test/smask-paint.pdf.xfail.png                       |binary
 test/smask-paint.svg.ref.png                         |binary
 test/smask-stroke.c                                  |    2 
 test/smask-stroke.pdf.xfail.png                      |binary
 test/smask-text.c                                    |    2 
 test/smask-text.pdf.ref.png                          |binary
 test/smask-text.ref.png                              |binary
 test/smask-text.svg.ref.png                          |binary
 test/smask.c                                         |    2 
 test/smask.pdf.xfail.png                             |binary
 test/smask.ref.png                                   |binary
 test/smask.svg.ref.png                               |binary
 test/source-clip-scale.svg.ref.png                   |binary
 test/surface-pattern-big-scale-down.c                |    2 
 test/surface-pattern-big-scale-down.ref.png          |binary
 test/surface-pattern-scale-down.pdf.ref.png          |binary
 test/surface-pattern-scale-up.pdf.ref.png            |binary
 test/surface-pattern.pdf.xfail.png                   |binary
 test/surface-pattern.ps.xfail.png                    |binary
 test/surface-pattern.svg.xfail.png                   |binary
 test/test-fallback16-surface-source.ps.ref.png       |binary
 test/text-pattern.pdf.argb32.xfail.png               |binary
 test/text-pattern.pdf.rgb24.xfail.png                |binary
 test/text-pattern.svg.argb32.ref.png                 |binary
 test/text-pattern.svg.rgb24.ref.png                  |binary
 test/text-rotate.svg.ref.png                         |binary
 test/text-transform.svg.ref.png                      |binary
 test/twin.svg.ref.png                                |binary
 test/unbounded-operator.c                            |    2 
 test/unbounded-operator.svg12.argb32.xfail.png       |binary
 test/unbounded-operator.svg12.rgb24.xfail.png        |binary
 test/user-font-mask.svg.ref.png                      |binary
 test/user-font-proxy.ps.ref.png                      |binary
 test/user-font-proxy.svg.ref.png                     |binary
 test/user-font-rescale.svg.ref.png                   |binary
 test/user-font.svg.ref.png                           |binary
 179 files changed, 444 insertions(+), 312 deletions(-)

New commits:
commit 655a4dbc36d95ce4a82cbc13aa9e2002b41fa4de
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jul 13 14:31:43 2009 +0100

    [test] Track XFAIL using expected results stored as xfail.png
    
    Instead of tagging the sources, which is insensitive to changes, track the
    known failure modes by recording the current fail as an xfail.png
    reference. (We also introduce a new.png to track a fresh error, so that
    they are not lost in the noise of the old XFAILs and hopefully do not
    cause everyone to fret).
    
    As we have removed the XFAIL tagging we find, surprise surprise, that some
    tests are now working -- so review all the reference images (as also some
    .ref.png now should be .xfail.png).
    
    Note: I've only checked image,pdf,ps,svg. The test surfaces report some
    failures that probably need to addressed in source. I've not correct the
    changes for win32 and quartz. Nor fixed up the experimental backends.

diff --git a/test/alpha-similar.c b/test/alpha-similar.c
index 29c3aeb..a9411d1 100644
--- a/test/alpha-similar.c
+++ b/test/alpha-similar.c
@@ -63,7 +63,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (alpha_similar,
 	    "Tests creation of similar alpha surfaces"
 	    "\nApplication of a pure-alpha similar source is inconsistent across backends.",
-	    "XFAIL=ps,pdf,svg alpha, similar", /* keywords */
+	    "alpha, similar", /* keywords */
 	    NULL, /* requirements */
 	    10, 10,
 	    NULL, draw)
diff --git a/test/alpha-similar.pdf.argb32.xfail.png b/test/alpha-similar.pdf.argb32.xfail.png
new file mode 100644
index 0000000..75aa600
Binary files /dev/null and b/test/alpha-similar.pdf.argb32.xfail.png differ
diff --git a/test/alpha-similar.pdf.rgb24.xfail.png b/test/alpha-similar.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..86366d2
Binary files /dev/null and b/test/alpha-similar.pdf.rgb24.xfail.png differ
diff --git a/test/alpha-similar.ps.argb32.xfail.png b/test/alpha-similar.ps.argb32.xfail.png
new file mode 100644
index 0000000..75aa600
Binary files /dev/null and b/test/alpha-similar.ps.argb32.xfail.png differ
diff --git a/test/alpha-similar.ps.rgb24.xfail.png b/test/alpha-similar.ps.rgb24.xfail.png
new file mode 100644
index 0000000..15a6aa1
Binary files /dev/null and b/test/alpha-similar.ps.rgb24.xfail.png differ
diff --git a/test/alpha-similar.svg.argb32.xfail.png b/test/alpha-similar.svg.argb32.xfail.png
new file mode 100644
index 0000000..2ade632
Binary files /dev/null and b/test/alpha-similar.svg.argb32.xfail.png differ
diff --git a/test/alpha-similar.svg.rgb24.xfail.png b/test/alpha-similar.svg.rgb24.xfail.png
new file mode 100644
index 0000000..c236898
Binary files /dev/null and b/test/alpha-similar.svg.rgb24.xfail.png differ
diff --git a/test/big-line.c b/test/big-line.c
index 3ee6f43..105e7ee 100644
--- a/test/big-line.c
+++ b/test/big-line.c
@@ -56,7 +56,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (big_line,
 	    "Test drawing of simple lines with positive and negative coordinates > 2^16\n"
 	    "This currently fails because of 16-bit limitations in pixman.",
-	    "XFAIL line", /* keywords */
+	    "line", /* keywords */
 	    NULL, /* requirements */
 	    100, 100,
 	    NULL, draw)
diff --git a/test/big-line.ps.argb32.ref.png b/test/big-line.ps.argb32.ref.png
new file mode 100644
index 0000000..60e7321
Binary files /dev/null and b/test/big-line.ps.argb32.ref.png differ
diff --git a/test/big-line.ps.rgb24.ref.png b/test/big-line.ps.rgb24.ref.png
new file mode 100644
index 0000000..8be5f9f
Binary files /dev/null and b/test/big-line.ps.rgb24.ref.png differ
diff --git a/test/big-line.ps2.ref.png b/test/big-line.ps2.ref.png
deleted file mode 100644
index 2a4f57c..0000000
Binary files a/test/big-line.ps2.ref.png and /dev/null differ
diff --git a/test/big-line.ps2.rgb24.ref.png b/test/big-line.ps2.rgb24.ref.png
deleted file mode 100644
index d3d2356..0000000
Binary files a/test/big-line.ps2.rgb24.ref.png and /dev/null differ
diff --git a/test/big-line.ps3.ref.png b/test/big-line.ps3.ref.png
deleted file mode 100644
index 2a4f57c..0000000
Binary files a/test/big-line.ps3.ref.png and /dev/null differ
diff --git a/test/big-line.ps3.rgb24.ref.png b/test/big-line.ps3.rgb24.ref.png
deleted file mode 100644
index d3d2356..0000000
Binary files a/test/big-line.ps3.rgb24.ref.png and /dev/null differ
diff --git a/test/big-line.ref.png b/test/big-line.ref.png
deleted file mode 100644
index 7bfb379..0000000
Binary files a/test/big-line.ref.png and /dev/null differ
diff --git a/test/big-line.rgb24.ref.png b/test/big-line.rgb24.ref.png
deleted file mode 100644
index f1fc49d..0000000
Binary files a/test/big-line.rgb24.ref.png and /dev/null differ
diff --git a/test/big-trap.c b/test/big-trap.c
index 38f2adb..507e0e5 100644
--- a/test/big-trap.c
+++ b/test/big-trap.c
@@ -61,6 +61,11 @@
 static cairo_test_status_t
 draw (cairo_t *cr, int width, int height)
 {
+    cairo_set_source_rgb (cr, 1,1,1);
+    cairo_paint (cr);
+
+    cairo_set_source_rgb (cr, 0,0,0);
+
     /* Note that without the clip, this doesn't crash... */
     cairo_new_path (cr);
     cairo_rectangle (cr, 0, 0, width, height);
@@ -80,7 +85,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (big_trap,
 	    "Test oversize trapezoid with a clip region"
 	    "\nTest needs to be adjusted to trigger the original bug",
-	    "XFAIL trap", /* keywords */
+	    "trap", /* keywords */
 	    NULL, /* requirements */
 	    100, 100,
 	    NULL, draw)
diff --git a/test/cairo-test-runner.c b/test/cairo-test-runner.c
index 2eb2986..ff90f71 100644
--- a/test/cairo-test-runner.c
+++ b/test/cairo-test-runner.c
@@ -66,7 +66,6 @@ typedef struct _cairo_test_runner {
 
     cairo_bool_t passed;
     int num_passed;
-    int num_xpassed;
     int num_skipped;
     int num_failed;
     int num_xfailed;
@@ -74,11 +73,9 @@ typedef struct _cairo_test_runner {
 
     cairo_test_list_t **crashes_per_target;
     cairo_test_list_t **fails_per_target;
-    cairo_test_list_t **xpasses_per_target;
 
     int *num_failed_per_target;
     int *num_crashed_per_target;
-    int *num_xpassed_per_target;
 
     cairo_bool_t foreground;
     cairo_bool_t list_only;
@@ -342,14 +339,10 @@ _runner_init (cairo_test_runner_t *runner)
 
     runner->passed = TRUE;
 
-    runner->xpasses_per_target = xcalloc (sizeof (cairo_test_list_t *),
-					  runner->base.num_targets);
     runner->fails_per_target = xcalloc (sizeof (cairo_test_list_t *),
 					runner->base.num_targets);
     runner->crashes_per_target = xcalloc (sizeof (cairo_test_list_t *),
 					  runner->base.num_targets);
-    runner->num_xpassed_per_target = xcalloc (sizeof (int),
-					      runner->base.num_targets);
     runner->num_failed_per_target = xcalloc (sizeof (int),
 					     runner->base.num_targets);
     runner->num_crashed_per_target = xcalloc (sizeof (int),
@@ -373,9 +366,8 @@ static void
 _runner_print_summary (cairo_test_runner_t *runner)
 {
     _log (&runner->base,
-	  "%d Passed [%d unexpectedly], %d Failed [%d crashed, %d expected], %d Skipped\n",
-	  runner->num_passed + runner->num_xpassed,
-	  runner->num_xpassed,
+	  "%d Passed, %d Failed [%d crashed, %d expected], %d Skipped\n",
+	  runner->num_passed,
 
 	  runner->num_failed + runner->num_crashed + runner->num_xfailed,
 	  runner->num_crashed,
@@ -427,23 +419,6 @@ _runner_print_details (cairo_test_runner_t *runner)
 	    }
 	    _log (&runner->base, "\n");
 	}
-
-	if (runner->num_xpassed_per_target[n]) {
-	    _log (&runner->base, "%s (%s): %d unexpectedly passed -",
-		  target->name,
-		  cairo_boilerplate_content_name (target->content),
-		  runner->num_xpassed_per_target[n]);
-
-	    for (list = runner->xpasses_per_target[n];
-		 list != NULL;
-		 list = list->next)
-	    {
-		char *name = cairo_test_get_name (list->test);
-		_log (&runner->base, " %s", name);
-		free (name);
-	    }
-	    _log (&runner->base, "\n");
-	}
     }
 }
 
@@ -469,21 +444,18 @@ _runner_fini (cairo_test_runner_t *runner)
     for (n = 0; n < runner->base.num_targets; n++) {
 	_list_free (runner->crashes_per_target[n]);
 	_list_free (runner->fails_per_target[n]);
-	_list_free (runner->xpasses_per_target[n]);
     }
     free (runner->crashes_per_target);
     free (runner->fails_per_target);
-    free (runner->xpasses_per_target);
 
     free (runner->num_crashed_per_target);
     free (runner->num_failed_per_target);
-    free (runner->num_xpassed_per_target);
 
     cairo_test_fini (&runner->base);
 
     return runner->num_failed + runner->num_crashed ?
 	CAIRO_TEST_FAILURE :
-	runner->num_passed + runner->num_xpassed + runner->num_xfailed ?
+	runner->num_passed + runner->num_xfailed ?
 	CAIRO_TEST_SUCCESS : CAIRO_TEST_UNTESTED;
 }
 
@@ -632,9 +604,8 @@ main (int argc, char **argv)
 
     for (list = tests; list != NULL; list = list->next) {
 	cairo_test_context_t ctx;
-	cairo_test_status_t status, expectation;
-	cairo_bool_t failed = FALSE, crashed = FALSE, skipped = TRUE;
-	const char *XFAIL = NULL;
+	cairo_test_status_t status;
+	cairo_bool_t failed = FALSE, xfailed = FALSE, crashed = FALSE, skipped = TRUE;
 	char *name = cairo_test_get_name (list->test);
 	int i;
 
@@ -657,7 +628,7 @@ main (int argc, char **argv)
 		    found = TRUE;
 		}
 
-		/* keyword match */
+		/* XXX keyword match */
 		if (keywords != NULL && strstr (keywords, match) != NULL) {
 		    found = ! invert;
 		    break;
@@ -715,20 +686,6 @@ main (int argc, char **argv)
 	    goto TEST_NEXT;
 	}
 
-	/* check for a failing test */
-	expectation = CAIRO_TEST_SUCCESS;
-	if (list->test->keywords != NULL &&
-	    (XFAIL = strstr (list->test->keywords, "XFAIL")) != NULL)
-	{
-	    if (XFAIL[5] == '=') {
-		/* backend specific expected failure */
-		XFAIL += 5;
-	    } else {
-		XFAIL = NULL;
-		expectation = CAIRO_TEST_FAILURE;
-	    }
-	}
-
 	_cairo_test_context_init_for_test (&ctx, &runner.base, list->test);
 	memset (target_status, 0,
 		sizeof (cairo_test_status_t) * ctx.num_targets);
@@ -739,10 +696,14 @@ main (int argc, char **argv)
 	    case CAIRO_TEST_SUCCESS:
 		skipped = FALSE;
 		break;
-	    case CAIRO_TEST_NO_MEMORY:
+	    case CAIRO_TEST_XFAILURE:
+		xfailed = TRUE;
+		goto TEST_DONE;
+	    case CAIRO_TEST_NEW:
 	    case CAIRO_TEST_FAILURE:
 		failed = TRUE;
 		goto TEST_DONE;
+	    case CAIRO_TEST_NO_MEMORY:
 	    case CAIRO_TEST_CRASHED:
 		failed = TRUE;
 		goto TEST_DONE;
@@ -757,35 +718,13 @@ main (int argc, char **argv)
 	for (n = 0; n < ctx.num_targets; n++) {
 	    const cairo_boilerplate_target_t *target;
 	    cairo_bool_t target_failed = FALSE,
+			 target_xfailed = FALSE,
 			 target_crashed = FALSE,
 			 target_skipped = TRUE;
 	    int has_similar;
 
 	    target = ctx.targets_to_test[n];
 
-	    if (XFAIL != NULL) {
-		const char *target_XFAIL, *base_XFAIL = NULL;
-
-		if (((target_XFAIL = strstr (XFAIL, target->name)) != NULL ||
-		     (base_XFAIL = target_XFAIL = strstr (XFAIL, target->basename)) != NULL) &&
-		    target_XFAIL < strpbrk (XFAIL, " \t;:") &&
-		    target_XFAIL[-1] != '!')
-		{
-		    ctx.expectation = CAIRO_TEST_FAILURE;
-
-		    if (base_XFAIL != NULL) {
-			unsigned slen;
-
-			slen = strpbrk (base_XFAIL, " \t;:,") - base_XFAIL;
-			if (slen != strlen (target->basename))
-			    ctx.expectation = CAIRO_TEST_SUCCESS;
-		    }
-		}
-		else
-		    ctx.expectation = CAIRO_TEST_SUCCESS;
-	    } else
-		ctx.expectation = expectation;
-
 	    has_similar = runner.full_test ?
 			  cairo_test_target_has_similar (&ctx, target) :
 		          0;
@@ -800,7 +739,11 @@ main (int argc, char **argv)
 		    case CAIRO_TEST_SUCCESS:
 			target_skipped = FALSE;
 			break;
+		    case CAIRO_TEST_XFAILURE:
+			target_xfailed = TRUE;
+			break;
 		    case CAIRO_TEST_NO_MEMORY:
+		    case CAIRO_TEST_NEW:
 		    case CAIRO_TEST_FAILURE:
 			target_failed = TRUE;
 			break;
@@ -820,26 +763,19 @@ main (int argc, char **argv)
 							      list->test);
 		crashed = TRUE;
 	    } else if (target_failed) {
-		if (ctx.expectation == CAIRO_TEST_SUCCESS) {
-		    target_status[n] = CAIRO_TEST_FAILURE;
-		    runner.num_failed_per_target[n]++;
-		    runner.fails_per_target[n] = _list_prepend (runner.fails_per_target[n],
-								list->test);
-		} else
-		    target_status[n] = CAIRO_TEST_SUCCESS;
+		target_status[n] = CAIRO_TEST_FAILURE;
+		runner.num_failed_per_target[n]++;
+		runner.fails_per_target[n] = _list_prepend (runner.fails_per_target[n],
+							    list->test);
 
 		failed = TRUE;
+	    } else if (target_xfailed) {
+		target_status[n] = CAIRO_TEST_XFAILURE;
+		xfailed = TRUE;
 	    } else if (target_skipped) {
 		target_status[n] = CAIRO_TEST_UNTESTED;
 	    } else {
 		target_status[n] = CAIRO_TEST_SUCCESS;
-		/* An unexpected pass should also be flagged */
-		if (ctx.expectation != CAIRO_TEST_SUCCESS) {
-		    target_status[n] = CAIRO_TEST_FAILURE;
-		    runner.num_xpassed_per_target[n]++;
-		    runner.xpasses_per_target[n] = _list_prepend (runner.xpasses_per_target[n],
-								  list->test);
-		}
 		skipped = FALSE;
 	    }
 	}
@@ -866,44 +802,32 @@ main (int argc, char **argv)
 	    runner.num_crashed++;
 	    runner.passed = FALSE;
 	} else if (failed) {
-	    if (expectation == CAIRO_TEST_SUCCESS) {
-		len = 0;
-		for (n = 0 ; n < runner.base.num_targets; n++) {
-		    if (target_status[n] == CAIRO_TEST_FAILURE) {
-			if (strstr (targets,
-				    runner.base.targets_to_test[n]->name) == NULL)
-			{
-			    len += snprintf (targets + len,
-					     sizeof (targets) - len,
-					     "%s, ",
-					     runner.base.targets_to_test[n]->name);
-			}
+	    len = 0;
+	    for (n = 0 ; n < runner.base.num_targets; n++) {
+		if (target_status[n] == CAIRO_TEST_FAILURE) {
+		    if (strstr (targets,
+				runner.base.targets_to_test[n]->name) == NULL)
+		    {
+			len += snprintf (targets + len,
+					 sizeof (targets) - len,
+					 "%s, ",
+					 runner.base.targets_to_test[n]->name);
 		    }
 		}
-		if (len == 0) {
-		    _log (&runner.base, "%s: XFAIL\n", name);
-		    runner.num_xfailed++;
-		} else {
-		    targets[len-2] = '\0';
-		    _log (&runner.base, "%s: FAIL (%s)\n", name, targets);
-		    runner.num_failed++;
-		    runner.passed = FALSE;
-		}
-	    } else {
-		_log (&runner.base, "%s: XFAIL\n", name);
-		runner.num_xfailed++;
 	    }
+	    targets[len-2] = '\0';
+	    _log (&runner.base, "%s: FAIL (%s)\n", name, targets);
+	    runner.num_failed++;
+	    runner.passed = FALSE;
+	} else if (xfailed) {
+	    _log (&runner.base, "%s: XFAIL\n", name);
+	    runner.num_xfailed++;
 	} else if (skipped) {
 	    _log (&runner.base, "%s: UNTESTED\n", name);
 	    runner.num_skipped++;
 	} else {
-	    if (expectation == CAIRO_TEST_SUCCESS) {
-		_log (&runner.base, "%s: PASS\n", name);
-		runner.num_passed++;
-	    } else {
-		_log (&runner.base, "%s: XPASS\n", name);
-		runner.num_xpassed++;
-	    }
+	    _log (&runner.base, "%s: PASS\n", name);
+	    runner.num_passed++;
 	}
 	fflush (runner.base.log_file);
 
@@ -921,7 +845,6 @@ main (int argc, char **argv)
     for (n = 0 ; n < runner.base.num_targets; n++) {
 	runner.crashes_per_target[n] = _list_reverse (runner.crashes_per_target[n]);
 	runner.fails_per_target[n] = _list_reverse (runner.fails_per_target[n]);
-	runner.xpasses_per_target[n] = _list_reverse (runner.xpasses_per_target[n]);
     }
 
     _runner_print_results (&runner);
diff --git a/test/cairo-test.c b/test/cairo-test.c
index 3e2dc12..26e7a15 100644
--- a/test/cairo-test.c
+++ b/test/cairo-test.c
@@ -86,6 +86,10 @@
 #define TRUE !FALSE
 #endif
 
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(A) (sizeof(A) / sizeof (A[0]))
+#endif
+
 static const cairo_user_data_key_t _cairo_test_context_key;
 
 static void
@@ -95,12 +99,6 @@ static const char *fail_face = "", *xfail_face="", *normal_face = "";
 static cairo_bool_t print_fail_on_stdout;
 static int cairo_test_timeout = 60;
 
-#define CAIRO_TEST_LOG_SUFFIX ".log"
-#define CAIRO_TEST_PNG_SUFFIX ".out.png"
-#define CAIRO_TEST_REF_SUFFIX ".ref.png"
-#define CAIRO_TEST_DIFF_SUFFIX ".diff.png"
-#define CAIRO_TEST_OUTPUT_DIR "output"
-
 #define NUM_DEVICE_OFFSETS 2
 
 static char *
@@ -127,8 +125,7 @@ static void
 _cairo_test_init (cairo_test_context_t *ctx,
 		  const cairo_test_context_t *parent,
 		  const cairo_test_t *test,
-		  const char *test_name,
-		  cairo_test_status_t expectation)
+		  const char *test_name)
 {
     char *log_name;
 
@@ -140,7 +137,6 @@ _cairo_test_init (cairo_test_context_t *ctx,
 
     ctx->test = test;
     ctx->test_name = _cairo_test_fixup_name (test_name);
-    ctx->expectation = expectation;
 
     ctx->malloc_failure = 0;
 #if HAVE_MEMFAULT
@@ -212,14 +208,14 @@ _cairo_test_context_init_for_test (cairo_test_context_t *ctx,
 				   const cairo_test_context_t *parent,
 				   const cairo_test_t *test)
 {
-    _cairo_test_init (ctx, parent, test, test->name, CAIRO_TEST_SUCCESS);
+    _cairo_test_init (ctx, parent, test, test->name);
 }
 
 void
 cairo_test_init (cairo_test_context_t *ctx,
 		 const char *test_name)
 {
-    _cairo_test_init (ctx, NULL, NULL, test_name, CAIRO_TEST_SUCCESS);
+    _cairo_test_init (ctx, NULL, NULL, test_name);
 }
 
 static void
@@ -329,21 +325,24 @@ _xunlink (const cairo_test_context_t *ctx, const char *pathname)
 }
 
 char *
-cairo_test_reference_image_filename (const cairo_test_context_t *ctx,
-	                             const char *base_name,
-				     const char *test_name,
-				     const char *target_name,
-				     const char *base_target_name,
-				     const char *format)
+cairo_test_reference_filename (const cairo_test_context_t *ctx,
+			       const char *base_name,
+			       const char *test_name,
+			       const char *target_name,
+			       const char *base_target_name,
+			       const char *format,
+			       const char *suffix,
+			       const char *extension)
 {
     char *ref_name = NULL;
 
     /* First look for a previous build for comparison. */
     if (ctx->refdir != NULL) {
-	xasprintf (&ref_name, "%s/%s%s",
+	xasprintf (&ref_name, "%s/%s%s%s",
 		   ctx->refdir,
 		   base_name,
-		   CAIRO_TEST_PNG_SUFFIX);
+		   suffix,
+		   extension);
 	if (access (ref_name, F_OK) != 0)
 	    free (ref_name);
 	else
@@ -351,66 +350,72 @@ cairo_test_reference_image_filename (const cairo_test_context_t *ctx,
     }
 
     /* Next look for a target/format-specific reference image. */
-    xasprintf (&ref_name, "%s/%s.%s.%s%s",
+    xasprintf (&ref_name, "%s/%s.%s.%s%s%s",
 	       ctx->srcdir,
 	       test_name,
 	       target_name,
 	       format,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
 	goto done;
 
     /* Next, look for target-specific reference image. */
-    xasprintf (&ref_name, "%s/%s.%s%s",
+    xasprintf (&ref_name, "%s/%s.%s%s%s",
 	       ctx->srcdir,
 	       test_name,
 	       target_name,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
 	goto done;
 
     /* Next look for a base/format-specific reference image. */
-    xasprintf (&ref_name, "%s/%s.%s.%s%s",
+    xasprintf (&ref_name, "%s/%s.%s.%s%s%s",
 	       ctx->srcdir,
 	       test_name,
 	       base_target_name,
 	       format,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
 	goto done;
 
     /* Next, look for base-specific reference image. */
-    xasprintf (&ref_name, "%s/%s.%s%s",
+    xasprintf (&ref_name, "%s/%s.%s%s%s",
 	       ctx->srcdir,
 	       test_name,
 	       base_target_name,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
 	goto done;
 
     /* Next, look for format-specific reference image. */
-    xasprintf (&ref_name, "%s/%s.%s%s",
+    xasprintf (&ref_name, "%s/%s.%s%s%s",
 	       ctx->srcdir,
 	       test_name,
 	       format,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
 	goto done;
 
     /* Finally, look for the standard reference image. */
-    xasprintf (&ref_name, "%s/%s%s", ctx->srcdir,
+    xasprintf (&ref_name, "%s/%s%s%s", ctx->srcdir,
 	       test_name,
-	       CAIRO_TEST_REF_SUFFIX);
+	       suffix,
+	       extension);
     if (access (ref_name, F_OK) != 0)
 	free (ref_name);
     else
@@ -546,22 +551,31 @@ cairo_test_get_reference_image (cairo_test_context_t *ctx,
 
 static cairo_bool_t
 cairo_test_file_is_older (const char *filename,
-	                  const char *ref_filename)
+	                  char **ref_filenames,
+			  int num_ref_filenames)
 {
 #if HAVE_SYS_STAT_H
-    struct stat st, ref;
+    struct stat st;
 
     if (stat (filename, &st) < 0)
 	return FALSE;
 
-    if (stat (ref_filename, &ref) < 0)
-	return TRUE;
+    while (num_ref_filenames--) {
+	struct stat ref;
+	char *ref_filename = ref_filenames++;
 
-    return st.st_mtime < ref.st_mtime;
-#else
-    /* XXX */
-    return FALSE;
+	if (ref_filename == NULL)
+	    continue;
+
+	if (stat (ref_filename++, &ref) < 0)
+	    continue;
+
+	if (st.st_mtime <= ref.st_mtime)
+	    return TRUE;
+    }
 #endif
+
+    return FALSE;
 }
 
 static cairo_bool_t
@@ -571,6 +585,9 @@ cairo_test_files_equal (const char *test_filename,
     FILE *test, *pass;
     int t, p;
 
+    if (test_filename == NULL || pass_filename == NULL)
+	return FALSE;
+
     test = fopen (test_filename, "rb");
     if (test == NULL)
 	return FALSE;
@@ -659,7 +676,11 @@ cairo_test_for_target (cairo_test_context_t		 *ctx,
     const char *empty_str = "";
     char *offset_str, *thread_str;
     char *base_name, *base_path;
-    char *png_path, *ref_path, *diff_path;
+    char *out_png_path;
+    char *ref_path = NULL, *ref_png_path;
+    char *new_path = NULL, *new_png_path;
+    char *xfail_path = NULL, *xfail_png_path;
+    char *diff_png_path;
     char *test_filename = NULL, *pass_filename = NULL, *fail_filename = NULL;
     cairo_test_status_t ret;
     cairo_content_t expected_content;
@@ -700,18 +721,64 @@ cairo_test_for_target (cairo_test_context_t		 *ctx,
       free (thread_str);
 
 
-    ref_path = cairo_test_reference_image_filename (ctx,
+    ref_png_path = cairo_test_reference_filename (ctx,
+						  base_name,
+						  ctx->test_name,
+						  target->name,
+						  target->basename,
+						  format,
+						  CAIRO_TEST_REF_SUFFIX,
+						  CAIRO_TEST_PNG_EXTENSION);
+    new_png_path = cairo_test_reference_filename (ctx,
+						  base_name,
+						  ctx->test_name,
+						  target->name,
+						  target->basename,
+						  format,
+						  CAIRO_TEST_NEW_SUFFIX,
+						  CAIRO_TEST_PNG_EXTENSION);
+    xfail_png_path = cairo_test_reference_filename (ctx,
 						    base_name,
 						    ctx->test_name,
 						    target->name,
 						    target->basename,
-						    format);
+						    format,
+						    CAIRO_TEST_XFAIL_SUFFIX,
+						    CAIRO_TEST_PNG_EXTENSION);
+
+    if (target->file_extension != NULL) {
+	ref_path = cairo_test_reference_filename (ctx,
+						  base_name,
+						  ctx->test_name,
+						  target->name,
+						  target->basename,
+						  format,
+						  CAIRO_TEST_REF_SUFFIX,
+						  target->file_extension);
+	new_path = cairo_test_reference_filename (ctx,
+						  base_name,
+						  ctx->test_name,
+						  target->name,
+						  target->basename,
+						  format,
+						  CAIRO_TEST_NEW_SUFFIX,
+						  target->file_extension);
+	xfail_path = cairo_test_reference_filename (ctx,
+						    base_name,
+						    ctx->test_name,
+						    target->name,
+						    target->basename,
+						    format,
+						    CAIRO_TEST_XFAIL_SUFFIX,
+						    target->file_extension);
+    }
+
     have_output_dir = _cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR);
     xasprintf (&base_path, "%s/%s",
 	       have_output_dir ? CAIRO_TEST_OUTPUT_DIR : ".",
 	       base_name);
-    xasprintf (&png_path, "%s" CAIRO_TEST_PNG_SUFFIX, base_path);
-    xasprintf (&diff_path, "%s" CAIRO_TEST_DIFF_SUFFIX, base_path);
+    xasprintf (&out_png_path, "%s" CAIRO_TEST_OUT_PNG, base_path);
+    xasprintf (&diff_png_path, "%s" CAIRO_TEST_DIFF_PNG, base_path);
 
     if (ctx->test->requirements != NULL) {
 	const char *required;
@@ -973,16 +1040,16 @@ REPEAT:
 	    }
 	}
 
-	if (ref_path == NULL) {
+	if (ref_png_path == NULL) {
 	    cairo_test_log (ctx, "Error: Cannot find reference image for %s\n",
 			    base_name);
 
 	    /* we may be running this test to generate reference images */
-	    _xunlink (ctx, png_path);
+	    _xunlink (ctx, out_png_path);
 	    test_image = target->get_image_surface (surface, 0,
 		                                    ctx->test->width,
 						    ctx->test->height);
-	    diff_status = cairo_surface_write_to_png (test_image, png_path);
+	    diff_status = cairo_surface_write_to_png (test_image, out_png_path);
 	    if (diff_status) {
 		cairo_test_log (ctx,
 			        "Error: Failed to write output image: %s\n",
@@ -991,11 +1058,20 @@ REPEAT:
 	    have_output = TRUE;
 	    cairo_surface_destroy (test_image);
 
-	    ret = CAIRO_TEST_FAILURE;
+	    ret = CAIRO_TEST_XFAILURE;
 	    goto UNWIND_CAIRO;
 	}
 
 	if (target->file_extension != NULL) { /* compare vector surfaces */
+	    char *filenames[] = {
+		ref_png_path,
+		ref_path,
+		new_png_path,
+		new_path,
+		xfail_png_path,
+		xfail_path,
+	    };
+
 	    xasprintf (&test_filename, "%s.out%s",
 		       base_path, target->file_extension);
 	    xasprintf (&pass_filename, "%s.pass%s",
@@ -1003,10 +1079,37 @@ REPEAT:
 	    xasprintf (&fail_filename, "%s.fail%s",
 		       base_path, target->file_extension);
 
-	    if (cairo_test_file_is_older (pass_filename, ref_path))
+	    if (cairo_test_file_is_older (pass_filename,
+					  filenames,
+					  ARRAY_SIZE (filenames)))
+	    {
 		_xunlink (ctx, pass_filename);
-	    if (cairo_test_file_is_older (fail_filename, ref_path))
+	    }
+	    if (cairo_test_file_is_older (fail_filename,
+					  filenames,
+					  ARRAY_SIZE (filenames)))
+	    {
 		_xunlink (ctx, fail_filename);
+	    }
+
+	    if (cairo_test_files_equal (out_png_path, ref_path)) {
+		cairo_test_log (ctx, "Vector surface matches reference.\n");
+		have_output = FALSE;
+		ret = CAIRO_TEST_SUCCESS;
+		goto UNWIND_CAIRO;
+	    }
+	    if (cairo_test_files_equal (out_png_path, new_path)) {
+		cairo_test_log (ctx, "Vector surface matches current failure.\n");
+		have_output = FALSE;
+		ret = CAIRO_TEST_NEW;
+		goto UNWIND_CAIRO;
+	    }
+	    if (cairo_test_files_equal (out_png_path, xfail_path)) {
+		cairo_test_log (ctx, "Vector surface matches known failure.\n");
+		have_output = FALSE;
+		ret = CAIRO_TEST_XFAILURE;
+		goto UNWIND_CAIRO;
+	    }
 
 	    if (cairo_test_files_equal (test_filename, pass_filename)) {
 		/* identical output as last known PASS */
@@ -1036,8 +1139,8 @@ REPEAT:
 	    goto UNWIND_CAIRO;
 	}
 
-	_xunlink (ctx, png_path);
-	diff_status = cairo_surface_write_to_png (test_image, png_path);
+	_xunlink (ctx, out_png_path);
+	diff_status = cairo_surface_write_to_png (test_image, out_png_path);
 	if (diff_status) {
 	    cairo_test_log (ctx, "Error: Failed to write output image: %s\n",
 			    cairo_status_to_string (diff_status));
@@ -1049,47 +1152,86 @@ REPEAT:
 
 	/* binary compare png files (no decompression) */
 	if (target->file_extension == NULL) {
-	    xasprintf (&test_filename, "%s", png_path);
+	    char *filenames[] = {
+		ref_png_path,
+		new_png_path,
+		xfail_png_path,
+	    };
+
+	    xasprintf (&test_filename, "%s", out_png_path);
 	    xasprintf (&pass_filename, "%s.pass.png", base_path);
 	    xasprintf (&fail_filename, "%s.fail.png", base_path);
 
+	    if (cairo_test_file_is_older (pass_filename,
+					  filenames,
+					  ARRAY_SIZE (filenames)))
+	    {
+		_xunlink (ctx, pass_filename);
+	    }
+	    if (cairo_test_file_is_older (fail_filename,
+					  filenames,
+					  ARRAY_SIZE (filenames)))
+	    {
+		_xunlink (ctx, fail_filename);
+	    }
+
 	    if (cairo_test_files_equal (test_filename, pass_filename)) {
-		/* identical output as last known PASS, pass */
 		cairo_test_log (ctx, "PNG file exactly matches last pass.\n");
 		cairo_surface_destroy (test_image);
 		ret = CAIRO_TEST_SUCCESS;
 		goto UNWIND_CAIRO;
 	    }
-	    if (cairo_test_files_equal (png_path, ref_path)) {
-		/* identical output as reference image */
+	    if (cairo_test_files_equal (out_png_path, ref_png_path)) {
 		cairo_test_log (ctx, "PNG file exactly reference image.\n");
 		cairo_surface_destroy (test_image);
 		ret = CAIRO_TEST_SUCCESS;
 		goto UNWIND_CAIRO;
 	    }
-
+	    if (cairo_test_files_equal (out_png_path, new_png_path)) {
+		cairo_test_log (ctx, "PNG file exactly current failure image.\n");
+		cairo_surface_destroy (test_image);
+		ret = CAIRO_TEST_NEW;
+		goto UNWIND_CAIRO;
+	    }
+	    if (cairo_test_files_equal (out_png_path, xfail_png_path)) {
+		cairo_test_log (ctx, "PNG file exactly known failure image.\n");
+		cairo_surface_destroy (test_image);
+		ret = CAIRO_TEST_XFAILURE;
+		goto UNWIND_CAIRO;
+	    }
 	    if (cairo_test_files_equal (test_filename, fail_filename)) {
 		cairo_test_log (ctx, "PNG file exactly matches last fail.\n");
-		/* identical output as last known FAIL, fail */
 		have_result = TRUE; /* presume these were kept around as well */
 		cairo_surface_destroy (test_image);
 		ret = CAIRO_TEST_FAILURE;
 		goto UNWIND_CAIRO;
 	    }
 	} else {
-	    if (cairo_test_files_equal (png_path, ref_path)) {
+	    if (cairo_test_files_equal (out_png_path, ref_png_path)) {
 		cairo_test_log (ctx, "PNG file exactly matches reference image.\n");
 		cairo_surface_destroy (test_image);
 		ret = CAIRO_TEST_SUCCESS;
 		goto UNWIND_CAIRO;
 	    }
+	    if (cairo_test_files_equal (out_png_path, xfail_png_path)) {
+		cairo_test_log (ctx, "PNG file exactly matches current failure image.\n");
+		cairo_surface_destroy (test_image);
+		ret = CAIRO_TEST_NEW;
+		goto UNWIND_CAIRO;
+	    }
+	    if (cairo_test_files_equal (out_png_path, xfail_png_path)) {
+		cairo_test_log (ctx, "PNG file exactly matches known failure image.\n");
+		cairo_surface_destroy (test_image);
+		ret = CAIRO_TEST_XFAILURE;
+		goto UNWIND_CAIRO;
+	    }
 	}
 
-	ref_image = cairo_test_get_reference_image (ctx, ref_path,
+	ref_image = cairo_test_get_reference_image (ctx, ref_png_path,
 						    target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED);
 	if (cairo_surface_status (ref_image)) {
 	    cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n",
-			    ref_path,
+			    ref_png_path,
 			    cairo_status_to_string (cairo_surface_status (ref_image)));
 	    cairo_surface_destroy (ref_image);
 	    cairo_surface_destroy (test_image);
@@ -1105,7 +1247,7 @@ REPEAT:
 				  test_image, ref_image,
 				  diff_image,
 				  &result);
-	_xunlink (ctx, diff_path);
+	_xunlink (ctx, diff_png_path);
 	if (diff_status) {
 	    cairo_test_log (ctx, "Error: Failed to compare images: %s\n",
 			    cairo_status_to_string (diff_status));
@@ -1116,7 +1258,7 @@ REPEAT:
 	{
 	    ret = CAIRO_TEST_FAILURE;
 
-	    diff_status = cairo_surface_write_to_png (diff_image, diff_path);
+	    diff_status = cairo_surface_write_to_png (diff_image, diff_png_path);
 	    if (diff_status) {
 		cairo_test_log (ctx, "Error: Failed to write differences image: %s\n",
 				cairo_status_to_string (diff_status));
@@ -1147,7 +1289,7 @@ UNWIND_CAIRO:
     }
 
 #if HAVE_MEMFAULT
-    if (ret == CAIRO_TEST_FAILURE && ctx->expectation != CAIRO_TEST_FAILURE)
+    if (ret == CAIRO_TEST_FAILURE)
 	MEMFAULT_PRINT_FAULTS ();
 #endif
     cairo_destroy (cr);
@@ -1166,11 +1308,8 @@ UNWIND_SURFACE:
 #endif
 
 	if (MEMFAULT_COUNT_LEAKS () > 0) {
-	    if (ret != CAIRO_TEST_FAILURE ||
-		ctx->expectation == CAIRO_TEST_FAILURE)
-	    {
+	    if (ret != CAIRO_TEST_FAILURE)
 		MEMFAULT_PRINT_FAULTS ();
-	    }
 	    MEMFAULT_PRINT_LEAKS ();
 	}
     }
@@ -1181,22 +1320,32 @@ UNWIND_SURFACE:
 
     if (ctx->thread == 0) {
 	if (have_output)
-	    cairo_test_log (ctx, "OUTPUT: %s\n", png_path);
+	    cairo_test_log (ctx, "OUTPUT: %s\n", out_png_path);
 
 	if (have_result) {
 	    cairo_test_log (ctx,
 		            "REFERENCE: %s\nDIFFERENCE: %s\n",
-			    ref_path, diff_path);
+			    ref_png_path, diff_png_path);
 	}
     }
 
 UNWIND_STRINGS:
-    if (png_path)
-      free (png_path);
+    if (out_png_path)
+      free (out_png_path);
+    if (ref_png_path)
+      free (ref_png_path);
     if (ref_path)
       free (ref_path);
-    if (diff_path)
-      free (diff_path);
+    if (new_png_path)
+      free (new_png_path);
+    if (new_path)
+      free (new_path);
+    if (xfail_png_path)
+      free (xfail_png_path);
+    if (xfail_path)
+      free (xfail_path);
+    if (diff_png_path)
+      free (diff_png_path);
     if (base_path)
       free (base_path);
     if (base_name)
@@ -1303,10 +1452,13 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
 	    printf ("PASS\n");
 	    cairo_test_log (ctx, "PASS\n");
 	    break;
+
 	case CAIRO_TEST_UNTESTED:
 	    printf ("UNTESTED\n");
 	    cairo_test_log (ctx, "UNTESTED\n");
 	    break;
+
+	default:
 	case CAIRO_TEST_CRASHED:
 	    if (print_fail_on_stdout && ctx->thread == 0) {
 		printf ("!!!CRASHED!!!\n");
@@ -1321,36 +1473,51 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
 		     cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
 		     fail_face, normal_face);
 	    break;
-	default:
+
+	case CAIRO_TEST_XFAILURE:
+	    if (print_fail_on_stdout && ctx->thread == 0) {
+		printf ("XFAIL\n");
+	    } else {
+		/* eat the test name */
+		printf ("\r");
+		fflush (stdout);
+	    }
+	    fprintf (stderr, "%s.%s.%s [%d]%s:\t%sXFAIL%s\n",
+		     ctx->test_name, target->name,
+		     cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+		     xfail_face, normal_face);
+	    cairo_test_log (ctx, "XFAIL\n");
+	    break;
+
+	case CAIRO_TEST_NEW:
+	    if (print_fail_on_stdout && ctx->thread == 0) {
+		printf ("NEW\n");
+	    } else {
+		/* eat the test name */
+		printf ("\r");
+		fflush (stdout);
+	    }
+	    fprintf (stderr, "%s.%s.%s [%d]%s:\t%sNEW%s\n",
+		     ctx->test_name, target->name,
+		     cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+		     fail_face, normal_face);
+	    cairo_test_log (ctx, "NEW\n");
+	    break;
+
 	case CAIRO_TEST_NO_MEMORY:
 	case CAIRO_TEST_FAILURE:
-	    if (ctx->expectation == CAIRO_TEST_FAILURE) {
-		if (print_fail_on_stdout && ctx->thread == 0) {
-		    printf ("XFAIL\n");
-		} else {
-		    /* eat the test name */
-		    printf ("\r");
-		    fflush (stdout);
-		}
-		fprintf (stderr, "%s.%s.%s [%d]%s:\t%sXFAIL%s\n",
-			 ctx->test_name, target->name,
-			 cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
-			 xfail_face, normal_face);
-		cairo_test_log (ctx, "XFAIL\n");
+	    if (print_fail_on_stdout && ctx->thread == 0) {
+		printf ("FAIL\n");
 	    } else {
-		if (print_fail_on_stdout && ctx->thread == 0) {
-		    printf ("FAIL\n");
-		} else {
-		    /* eat the test name */
-		    printf ("\r");
-		    fflush (stdout);
-		}
-		fprintf (stderr, "%s.%s.%s [%d]%s:\t%sFAIL%s\n",
-			 ctx->test_name, target->name,
-			 cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
-			 fail_face, normal_face);
-		cairo_test_log (ctx, "FAIL\n");
+		/* eat the test name */
+		printf ("\r");
+		fflush (stdout);
 	    }
+	    fprintf (stderr, "%s.%s.%s [%d]%s:\t%sFAIL%s\n",
+		     ctx->test_name, target->name,
+		     cairo_boilerplate_content_name (target->content), dev_offset, similar ? " (similar)" : "",
+		     fail_face, normal_face);
+	    cairo_test_log (ctx, "FAIL\n");
 	    break;
 	}
 	fflush (stdout);
@@ -1370,17 +1537,19 @@ _cairo_test_context_run_for_target (cairo_test_context_t *ctx,
 	case CAIRO_TEST_UNTESTED:
 	    printf ("UNTESTED\n");
 	    break;
+	default:
 	case CAIRO_TEST_CRASHED:
 	    printf ("!!!CRASHED!!!\n");
 	    break;
-	default:
+	case CAIRO_TEST_XFAILURE:
+	    printf ("XFAIL\n");
+	    break;
+	case CAIRO_TEST_NEW:
+	    printf ("NEW\n");
+	    break;
 	case CAIRO_TEST_NO_MEMORY:
 	case CAIRO_TEST_FAILURE:
-	    if (ctx->expectation == CAIRO_TEST_FAILURE) {
-		printf ("XFAIL\n");
-	    } else {
-		printf ("FAIL\n");
-	    }
+	    printf ("FAIL\n");
 	    break;
 	}
 
@@ -1473,19 +1642,15 @@ cairo_test_run_threaded (void *closure)
 
 
 static cairo_test_status_t
-cairo_test_expecting (const cairo_test_t *test,
-		      cairo_test_status_t expectation)
+cairo_test_expecting (const cairo_test_t *test)
 {
     cairo_test_context_t ctx;
     cairo_test_status_t ret = CAIRO_TEST_SUCCESS;
     size_t num_threads;
 
-    _cairo_test_init (&ctx, NULL, test, test->name, expectation);
+    _cairo_test_init (&ctx, NULL, test, test->name);
     printf ("%s\n", test->description);
 
-    if (expectation == CAIRO_TEST_FAILURE)
-	printf ("Expecting failure\n");
-
 #if HAVE_PTHREAD_H
     num_threads = 0;
     if (getenv ("CAIRO_TEST_NUM_THREADS"))
@@ -1517,20 +1682,6 @@ cairo_test_expecting (const cairo_test_t *test,
     if (ret != CAIRO_TEST_SUCCESS)
         printf ("Check %s%s out for more information.\n", ctx.test_name, CAIRO_TEST_LOG_SUFFIX);
 
-    /* if the set of targets to test was limited using CAIRO_TEST_TARGET, we
-     * behave slightly differently, to ensure that limiting the targets does
-     * not increase the number of tests failing. */
-    if (ctx.limited_targets) {
-	/* if all passed, but expecting failure, return failure to not
-	 * trigger an XPASS failure */
-	if (expectation == CAIRO_TEST_FAILURE && ret == CAIRO_TEST_SUCCESS) {
-	    printf ("All tested backends passed, but tested targets are manually limited\n"
-		    "and the test suite expects this test to fail for at least one target.\n"
-		    "Intentionally failing the test, to not fail the suite.\n");
-	    ret = CAIRO_TEST_FAILURE;
-	}
-    }
-
     cairo_test_fini (&ctx);
 
     return ret;
@@ -1545,7 +1696,7 @@ cairo_test (const cairo_test_t *test)
     _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
 #endif
 
-    return cairo_test_expecting (test, CAIRO_TEST_SUCCESS);
+    return cairo_test_expecting (test);
 }
 
 const cairo_test_context_t *
diff --git a/test/cairo-test.h b/test/cairo-test.h
index db02eef..bf10eb7 100644
--- a/test/cairo-test.h
+++ b/test/cairo-test.h
@@ -79,10 +79,51 @@ cairo_test_NaN (void)
 #endif
 }
 
+#define CAIRO_TEST_OUTPUT_DIR "output"
+
+#define CAIRO_TEST_LOG_SUFFIX ".log"
+
+/* What is a fail and what isn't?
+ * When running the test suite we want to detect unexpected output. This
+ * can be caused by a change we have made to cairo itself, or a change
+ * in our environment. To capture this we classify the expected output into 3
+ * classes:
+ *
+ *   REF  -- Perfect output.
+ *           Might be different for each backend, due to slight implementation
+ *           differences.
+ *
+ *   NEW  -- A new failure. We have uncovered a bug within cairo and have
+ *           recorded the current failure (along with the expected output
+ *           if possible!) so we can detect any changes in our attempt to
+ *           fix the bug.
+ *
+ *  XFAIL -- An external failure. We believe the cairo output is perfect,
+ *           but an external renderer is causing gross failure.
+ *           (We also use this to capture current WONTFIX issues within cairo,
+ *           such as overflow in internal coordinates, so as not to distract
+ *           us when regression testing.)
+ *
+ *  If no REF is given for a test, then it is assumed to be XFAIL.
+ */
+#define CAIRO_TEST_REF_SUFFIX ".ref"
+#define CAIRO_TEST_XFAIL_SUFFIX ".xfail"
+#define CAIRO_TEST_NEW_SUFFIX ".new"
+
+#define CAIRO_TEST_OUT_SUFFIX ".out"
+#define CAIRO_TEST_DIFF_SUFFIX ".diff"
+
+#define CAIRO_TEST_PNG_EXTENSION ".png"
+#define CAIRO_TEST_OUT_PNG CAIRO_TEST_OUT_SUFFIX CAIRO_TEST_PNG_EXTENSION
+#define CAIRO_TEST_REF_PNG CAIRO_TEST_REF_SUFFIX CAIRO_TEST_PNG_EXTENSION
+#define CAIRO_TEST_DIFF_PNG CAIRO_TEST_DIFF_SUFFIX CAIRO_TEST_PNG_EXTENSION
+
 typedef enum cairo_test_status {
     CAIRO_TEST_SUCCESS = 0,
     CAIRO_TEST_NO_MEMORY,
     CAIRO_TEST_FAILURE,
+    CAIRO_TEST_NEW,
+    CAIRO_TEST_XFAILURE,
     CAIRO_TEST_CRASHED,
     CAIRO_TEST_UNTESTED = 77 /* match automake's skipped exit status */
 } cairo_test_status_t;
@@ -161,7 +202,6 @@ cairo_test_register (const cairo_test_t *test);
 struct _cairo_test_context {
     const cairo_test_t *test;
     const char *test_name;
-    cairo_test_status_t expectation;
 
     FILE *log_file;
     const char *srcdir; /* directory containing sources and input data */
@@ -234,12 +274,14 @@ cairo_test_status_from_status (const cairo_test_context_t *ctx,
 			       cairo_status_t status);
 
 char *
-cairo_test_reference_image_filename (const cairo_test_context_t *ctx,
-	                             const char *base_name,
-				     const char *test_name,
-				     const char *target_name,
-				     const char *base_target_name,
-				     const char *format);
+cairo_test_reference_filename (const cairo_test_context_t *ctx,
+			       const char *base_name,
+			       const char *test_name,
+			       const char *target_name,
+			       const char *base_target_name,
+			       const char *format,
+			       const char *suffix,
+			       const char *extension);
 
 cairo_surface_t *
 cairo_test_get_reference_image (cairo_test_context_t *ctx,
diff --git a/test/caps-joins-alpha.svg11.ref.png b/test/caps-joins-alpha.svg11.ref.png
deleted file mode 100644
index 2468936..0000000
Binary files a/test/caps-joins-alpha.svg11.ref.png and /dev/null differ
diff --git a/test/caps-joins-alpha.svg12.ref.png b/test/caps-joins-alpha.svg12.ref.png
deleted file mode 100644
index 2468936..0000000
Binary files a/test/caps-joins-alpha.svg12.ref.png and /dev/null differ
diff --git a/test/clip-fill-rule.test-fallback.rgb24.ref.png b/test/clip-fill-rule.test-fallback.rgb24.ref.png
deleted file mode 100644
index d21472d..0000000
Binary files a/test/clip-fill-rule.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/clip-nesting.test-fallback.rgb24.ref.png b/test/clip-nesting.test-fallback.rgb24.ref.png
deleted file mode 100644
index d087ab6..0000000
Binary files a/test/clip-nesting.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/clip-operator.c b/test/clip-operator.c
index d9ffcd2..a6562a8 100644
--- a/test/clip-operator.c
+++ b/test/clip-operator.c
@@ -182,7 +182,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (clip_operator,
 	    "Surface clipping with different operators",
-	    "XFAIL=svg12 clip", /* keywords */
+	    "clip", /* keywords */
 	    NULL, /* requirements */
 	    IMAGE_WIDTH, IMAGE_HEIGHT,
 	    NULL, draw)
diff --git a/test/clip-operator.pdf.argb32.ref.png b/test/clip-operator.pdf.argb32.ref.png
deleted file mode 100644
index 318873a..0000000
Binary files a/test/clip-operator.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/clip-operator.pdf.argb32.xfail.png b/test/clip-operator.pdf.argb32.xfail.png
new file mode 100644
index 0000000..c0a4078
Binary files /dev/null and b/test/clip-operator.pdf.argb32.xfail.png differ
diff --git a/test/clip-operator.pdf.rgb24.ref.png b/test/clip-operator.pdf.rgb24.ref.png
deleted file mode 100644
index 6590dd8..0000000
Binary files a/test/clip-operator.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/clip-operator.pdf.rgb24.xfail.png b/test/clip-operator.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..01329b5
Binary files /dev/null and b/test/clip-operator.pdf.rgb24.xfail.png differ
diff --git a/test/clip-operator.svg12.argb32.xfail.png b/test/clip-operator.svg12.argb32.xfail.png
new file mode 100644
index 0000000..1c21d15
Binary files /dev/null and b/test/clip-operator.svg12.argb32.xfail.png differ
diff --git a/test/clip-operator.svg12.rgb24.xfail.png b/test/clip-operator.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..f79de48
Binary files /dev/null and b/test/clip-operator.svg12.rgb24.xfail.png differ
diff --git a/test/clip-operator.test-fallback.argb32.ref.png b/test/clip-operator.test-fallback.argb32.ref.png
deleted file mode 100644
index f53e492..0000000
Binary files a/test/clip-operator.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/clip-operator.test-fallback.rgb24.ref.png b/test/clip-operator.test-fallback.rgb24.ref.png
deleted file mode 100644
index 7579ae6..0000000
Binary files a/test/clip-operator.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/clip-twice.test-fallback.argb32.ref.png b/test/clip-twice.test-fallback.argb32.ref.png
deleted file mode 100644
index ba62180..0000000
Binary files a/test/clip-twice.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/clip-twice.test-fallback.rgb24.ref.png b/test/clip-twice.test-fallback.rgb24.ref.png
deleted file mode 100644
index 9cbdc4d..0000000
Binary files a/test/clip-twice.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/composite-integer-translate-source.c b/test/composite-integer-translate-source.c
index 9b6b749..a05133c 100644
--- a/test/composite-integer-translate-source.c
+++ b/test/composite-integer-translate-source.c
@@ -58,7 +58,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (composite_integer_translate_source,
 	    "Test simple compositing: integer-translation 32->32 SOURCE",
-	    "XFAIL=svg12 composite", /* keywords */
+	    "composite", /* keywords */
 	    NULL, /* requirements */
 	    SIZE, SIZE,
 	    NULL, draw)
diff --git a/test/degenerate-arc.test-fallback.argb32.ref.png b/test/degenerate-arc.test-fallback.argb32.ref.png
deleted file mode 100644
index 73d41af..0000000
Binary files a/test/degenerate-arc.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/degenerate-arc.test-fallback.rgb24.ref.png b/test/degenerate-arc.test-fallback.rgb24.ref.png
deleted file mode 100644
index 73d41af..0000000
Binary files a/test/degenerate-arc.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/degenerate-dash.c b/test/degenerate-dash.c
index 4bc0a42..961eeb5 100644
--- a/test/degenerate-dash.c
+++ b/test/degenerate-dash.c
@@ -83,7 +83,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (degenerate_dash,
 	    "Tests the behaviour of dashed segments that end on a off-on transition",
-	    "XFAIL=ps dash, degenerate", /* keywords */
+	    "dash, degenerate", /* keywords */
 	    NULL, /* requirementts */
 	    210 + 2*PAD, 210 + 2*PAD,
 	    NULL, draw)
diff --git a/test/degenerate-dash.ps.xfail.png b/test/degenerate-dash.ps.xfail.png
new file mode 100644
index 0000000..6d3737f
Binary files /dev/null and b/test/degenerate-dash.ps.xfail.png differ
diff --git a/test/degenerate-path.c b/test/degenerate-path.c
index b4c30ee..97cf7b2 100644
--- a/test/degenerate-path.c
+++ b/test/degenerate-path.c
@@ -112,7 +112,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (degenerate_path,
 	    "Tests the behaviour of degenerate paths with different cap types",
-	    "XFAIL=ps degenerate", /* keywords */
+	    "degenerate", /* keywords */
 	    NULL, /* requirements */
 	    3*(PAD+LINE_WIDTH+PAD), 8*(LINE_WIDTH+PAD) + PAD,
 	    NULL, draw)
diff --git a/test/degenerate-path.ps.argb32.xfail.png b/test/degenerate-path.ps.argb32.xfail.png
new file mode 100644
index 0000000..9bcf272
Binary files /dev/null and b/test/degenerate-path.ps.argb32.xfail.png differ
diff --git a/test/degenerate-path.ps.rgb24.xfail.png b/test/degenerate-path.ps.rgb24.xfail.png
new file mode 100644
index 0000000..00cca92
Binary files /dev/null and b/test/degenerate-path.ps.rgb24.xfail.png differ
diff --git a/test/degenerate-path.ps2.argb32.ref.png b/test/degenerate-path.ps2.argb32.ref.png
deleted file mode 100644
index 85b9d4b..0000000
Binary files a/test/degenerate-path.ps2.argb32.ref.png and /dev/null differ
diff --git a/test/degenerate-path.ps2.rgb24.ref.png b/test/degenerate-path.ps2.rgb24.ref.png
deleted file mode 100644
index 99e6c66..0000000
Binary files a/test/degenerate-path.ps2.rgb24.ref.png and /dev/null differ
diff --git a/test/degenerate-path.ps3.argb32.ref.png b/test/degenerate-path.ps3.argb32.ref.png
deleted file mode 100644
index 85b9d4b..0000000
Binary files a/test/degenerate-path.ps3.argb32.ref.png and /dev/null differ
diff --git a/test/degenerate-path.ps3.rgb24.ref.png b/test/degenerate-path.ps3.rgb24.ref.png
deleted file mode 100644
index 99e6c66..0000000
Binary files a/test/degenerate-path.ps3.rgb24.ref.png and /dev/null differ
diff --git a/test/device-offset-scale.c b/test/device-offset-scale.c
index 11e68f9..3df3d38 100644
--- a/test/device-offset-scale.c
+++ b/test/device-offset-scale.c
@@ -67,7 +67,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (device_offset_scale,
 	    "Test that the device-offset transform is transformed by the ctm.",
-	    "XFAIL=svg device-offset", /* keywords */
+	    "device-offset", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/device-offset-scale.svg.xfail.png b/test/device-offset-scale.svg.xfail.png
new file mode 100644
index 0000000..58a82d6
Binary files /dev/null and b/test/device-offset-scale.svg.xfail.png differ
diff --git a/test/extend-pad-border.c b/test/extend-pad-border.c
index 79a81fc..de8105c 100644
--- a/test/extend-pad-border.c
+++ b/test/extend-pad-border.c
@@ -89,7 +89,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (extend_pad_border,
 	    "Test CAIRO_EXTEND_PAD for surface patterns",
-	    "XFAIL=!image,pdf,ps,svg extend", /* keywords */
+	    "extend", /* keywords */
 	    NULL, /* requirements */
 	    SIZE, SIZE,
 	    NULL, draw)
diff --git a/test/extend-pad-border.ps.ref.png b/test/extend-pad-border.ps.ref.png
new file mode 100644
index 0000000..b1f4c40
Binary files /dev/null and b/test/extend-pad-border.ps.ref.png differ
diff --git a/test/extend-pad-border.svg.xfail.png b/test/extend-pad-border.svg.xfail.png
new file mode 100644
index 0000000..0fde36d
Binary files /dev/null and b/test/extend-pad-border.svg.xfail.png differ
diff --git a/test/extend-pad-similar.svg.xfail.png b/test/extend-pad-similar.svg.xfail.png
new file mode 100644
index 0000000..a2cf353
Binary files /dev/null and b/test/extend-pad-similar.svg.xfail.png differ
diff --git a/test/extend-pad.svg.xfail.png b/test/extend-pad.svg.xfail.png
new file mode 100644
index 0000000..a2cf353
Binary files /dev/null and b/test/extend-pad.svg.xfail.png differ
diff --git a/test/fallback-resolution.c b/test/fallback-resolution.c
index f5fcf07..1ffacb1 100644
--- a/test/fallback-resolution.c
+++ b/test/fallback-resolution.c
@@ -190,12 +190,14 @@ check_result (cairo_test_context_t *ctx,
     }
 
     format = cairo_boilerplate_content_name (target->content);
-    ref_name = cairo_test_reference_image_filename (ctx,
-	                                            base_name,
-						    test_name,
-						    target->name,
-						    target->basename,
-						    format);
+    ref_name = cairo_test_reference_filename (ctx,
+					      base_name,
+					      test_name,
+					      target->name,
+					      target->basename,
+					      format,
+					      CAIRO_TEST_REF_SUFFIX,
+					      CAIRO_TEST_PNG_EXTENSION);
     if (ref_name == NULL) {
 	cairo_test_log (ctx, "Error: Cannot find reference image for %s\n",
 		        base_name);
diff --git a/test/fill-alpha-pattern.pdf.argb32.ref.png b/test/fill-alpha-pattern.pdf.argb32.ref.png
deleted file mode 100644
index d7a7ebe..0000000
Binary files a/test/fill-alpha-pattern.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/fill-alpha-pattern.pdf.rgb24.ref.png b/test/fill-alpha-pattern.pdf.rgb24.ref.png
deleted file mode 100644
index ef9049e..0000000
Binary files a/test/fill-alpha-pattern.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/fill-alpha-pattern.test-fallback.argb32.ref.png b/test/fill-alpha-pattern.test-fallback.argb32.ref.png
deleted file mode 100644
index 4dafb83..0000000
Binary files a/test/fill-alpha-pattern.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/fill-alpha-pattern.test-fallback.rgb24.ref.png b/test/fill-alpha-pattern.test-fallback.rgb24.ref.png
deleted file mode 100644
index 4dafb83..0000000
Binary files a/test/fill-alpha-pattern.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/fill-alpha.test-fallback.argb32.ref.png b/test/fill-alpha.test-fallback.argb32.ref.png
deleted file mode 100644
index 85df919..0000000
Binary files a/test/fill-alpha.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/fill-alpha.test-fallback.rgb24.ref.png b/test/fill-alpha.test-fallback.rgb24.ref.png
deleted file mode 100644
index 85df919..0000000
Binary files a/test/fill-alpha.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/fill-and-stroke-alpha-add.c b/test/fill-and-stroke-alpha-add.c
index b953b76..55cd4c6 100644
--- a/test/fill-and-stroke-alpha-add.c
+++ b/test/fill-and-stroke-alpha-add.c
@@ -101,7 +101,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (fill_and_stroke_alpha_add,
 	    "Use a group to fill/stroke a path (each with different alpha) using DEST_OUT and ADD to combine",
-	    "XFAIL=svg12 fill-and-stroke, fill, stroke", /* keywords */
+	    "fill-and-stroke, fill, stroke", /* keywords */
 	    NULL, /* requirements */
 	    2 * SIZE + 4 * PAD, SIZE + 2 * PAD,
 	    NULL, draw)
diff --git a/test/fill-and-stroke-alpha-add.svg12.xfail.png b/test/fill-and-stroke-alpha-add.svg12.xfail.png
new file mode 100644
index 0000000..32962f7
Binary files /dev/null and b/test/fill-and-stroke-alpha-add.svg12.xfail.png differ
diff --git a/test/fill-degenerate-sort-order.c b/test/fill-degenerate-sort-order.c
index 7dc409d..d934810 100644
--- a/test/fill-degenerate-sort-order.c
+++ b/test/fill-degenerate-sort-order.c
@@ -71,7 +71,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (fill_degenerate_sort_order,
 	    "Tests the tessellator's event comparator with degenerate input",
-	    "XFAIL=ps degenerate, fill", /* keywords */
+	    "degenerate, fill", /* keywords */
 	    NULL, /* requirements */
 	    190, 120,
 	    NULL, draw)
diff --git a/test/fill-degenerate-sort-order.ps.argb32.xfail.png b/test/fill-degenerate-sort-order.ps.argb32.xfail.png
new file mode 100644
index 0000000..2d6af6f
Binary files /dev/null and b/test/fill-degenerate-sort-order.ps.argb32.xfail.png differ
diff --git a/test/fill-degenerate-sort-order.ps.rgb24.xfail.png b/test/fill-degenerate-sort-order.ps.rgb24.xfail.png
new file mode 100644
index 0000000..963fe0b
Binary files /dev/null and b/test/fill-degenerate-sort-order.ps.rgb24.xfail.png differ
diff --git a/test/fill-degenerate-sort-order.test-fallback.argb32.ref.png b/test/fill-degenerate-sort-order.test-fallback.argb32.ref.png
deleted file mode 100644
index 8cf567d..0000000
Binary files a/test/fill-degenerate-sort-order.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/fill-degenerate-sort-order.test-fallback.rgb24.ref.png b/test/fill-degenerate-sort-order.test-fallback.rgb24.ref.png
deleted file mode 100644
index da5aa50..0000000
Binary files a/test/fill-degenerate-sort-order.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/fill-image.xlib.ref.png b/test/fill-image.xlib.ref.png
new file mode 100644
index 0000000..b07fc14
Binary files /dev/null and b/test/fill-image.xlib.ref.png differ
diff --git a/test/fill-rule.test-fallback.argb32.ref.png b/test/fill-rule.test-fallback.argb32.ref.png
deleted file mode 100644
index e2e10d4..0000000
Binary files a/test/fill-rule.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/fill-rule.test-fallback.rgb24.ref.png b/test/fill-rule.test-fallback.rgb24.ref.png
deleted file mode 100644
index 49fb39c..0000000
Binary files a/test/fill-rule.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/filter-bilinear-extents.pdf.ref.png b/test/filter-bilinear-extents.pdf.ref.png
deleted file mode 100644
index 014b715..0000000
Binary files a/test/filter-bilinear-extents.pdf.ref.png and /dev/null differ
diff --git a/test/filter-bilinear-extents.pdf.xfail.png b/test/filter-bilinear-extents.pdf.xfail.png
new file mode 100644
index 0000000..e6c4bb4
Binary files /dev/null and b/test/filter-bilinear-extents.pdf.xfail.png differ
diff --git a/test/filter-nearest-offset.pdf.ref.png b/test/filter-nearest-offset.pdf.ref.png
deleted file mode 100644
index e19eb4f..0000000
Binary files a/test/filter-nearest-offset.pdf.ref.png and /dev/null differ
diff --git a/test/filter-nearest-offset.pdf.xfail.png b/test/filter-nearest-offset.pdf.xfail.png
new file mode 100644
index 0000000..4d436aa
Binary files /dev/null and b/test/filter-nearest-offset.pdf.xfail.png differ
diff --git a/test/filter-nearest-offset.svg.xfail.png b/test/filter-nearest-offset.svg.xfail.png
new file mode 100644
index 0000000..a46dc76
Binary files /dev/null and b/test/filter-nearest-offset.svg.xfail.png differ
diff --git a/test/filter-nearest-offset.svg11.ref.png b/test/filter-nearest-offset.svg11.ref.png
deleted file mode 100644
index df468f4..0000000
Binary files a/test/filter-nearest-offset.svg11.ref.png and /dev/null differ
diff --git a/test/filter-nearest-offset.svg12.ref.png b/test/filter-nearest-offset.svg12.ref.png
deleted file mode 100644
index df468f4..0000000
Binary files a/test/filter-nearest-offset.svg12.ref.png and /dev/null differ
diff --git a/test/filter-nearest-transformed.pdf.ref.png b/test/filter-nearest-transformed.pdf.ref.png
deleted file mode 100644
index 12d714e..0000000
Binary files a/test/filter-nearest-transformed.pdf.ref.png and /dev/null differ
diff --git a/test/filter-nearest-transformed.pdf.xfail.png b/test/filter-nearest-transformed.pdf.xfail.png
new file mode 100644
index 0000000..5ad98a7
Binary files /dev/null and b/test/filter-nearest-transformed.pdf.xfail.png differ
diff --git a/test/filter-nearest-transformed.svg.xfail.png b/test/filter-nearest-transformed.svg.xfail.png
new file mode 100644
index 0000000..e6bbe28
Binary files /dev/null and b/test/filter-nearest-transformed.svg.xfail.png differ
diff --git a/test/filter-nearest-transformed.svg11.ref.png b/test/filter-nearest-transformed.svg11.ref.png
deleted file mode 100644
index 4f18c0d..0000000
Binary files a/test/filter-nearest-transformed.svg11.ref.png and /dev/null differ
diff --git a/test/filter-nearest-transformed.svg12.ref.png b/test/filter-nearest-transformed.svg12.ref.png
deleted file mode 100644
index 4f18c0d..0000000
Binary files a/test/filter-nearest-transformed.svg12.ref.png and /dev/null differ
diff --git a/test/finer-grained-fallbacks.c b/test/finer-grained-fallbacks.c
index cd81e96..fa16f72 100644
--- a/test/finer-grained-fallbacks.c
+++ b/test/finer-grained-fallbacks.c
@@ -174,7 +174,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (finer_grained_fallbacks,
 	    "Test that multiple PS/PDF fallback images in various locations are correct",
-	    "XFAIL=svg12 fallbacks", /* keywords */
+	    "fallbacks", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/finer-grained-fallbacks.svg12.argb32.ref.png b/test/finer-grained-fallbacks.svg12.argb32.ref.png
new file mode 100644
index 0000000..5aaf86b
Binary files /dev/null and b/test/finer-grained-fallbacks.svg12.argb32.ref.png differ
diff --git a/test/finer-grained-fallbacks.svg12.rgb24.ref.png b/test/finer-grained-fallbacks.svg12.rgb24.ref.png
new file mode 100644
index 0000000..ad55366
Binary files /dev/null and b/test/finer-grained-fallbacks.svg12.rgb24.ref.png differ
diff --git a/test/finer-grained-fallbacks.test-fallback.argb32.ref.png b/test/finer-grained-fallbacks.test-fallback.argb32.ref.png
deleted file mode 100644
index c7eb113..0000000
Binary files a/test/finer-grained-fallbacks.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/finer-grained-fallbacks.test-fallback.rgb24.ref.png b/test/finer-grained-fallbacks.test-fallback.rgb24.ref.png
deleted file mode 100644
index ff75c6d..0000000
Binary files a/test/finer-grained-fallbacks.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg.ref.png b/test/font-matrix-translation.svg.ref.png
new file mode 100644
index 0000000..e35f9be
Binary files /dev/null and b/test/font-matrix-translation.svg.ref.png differ
diff --git a/test/font-matrix-translation.svg11.argb32.ref.png b/test/font-matrix-translation.svg11.argb32.ref.png
deleted file mode 100644
index 441f6e3..0000000
Binary files a/test/font-matrix-translation.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg11.ref.png b/test/font-matrix-translation.svg11.ref.png
deleted file mode 100644
index 92ad17b..0000000
Binary files a/test/font-matrix-translation.svg11.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg11.rgb24.ref.png b/test/font-matrix-translation.svg11.rgb24.ref.png
deleted file mode 100644
index 441f6e3..0000000
Binary files a/test/font-matrix-translation.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg12.argb32.ref.png b/test/font-matrix-translation.svg12.argb32.ref.png
deleted file mode 100644
index 441f6e3..0000000
Binary files a/test/font-matrix-translation.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg12.ref.png b/test/font-matrix-translation.svg12.ref.png
deleted file mode 100644
index 92ad17b..0000000
Binary files a/test/font-matrix-translation.svg12.ref.png and /dev/null differ
diff --git a/test/font-matrix-translation.svg12.rgb24.ref.png b/test/font-matrix-translation.svg12.rgb24.ref.png
deleted file mode 100644
index 441f6e3..0000000
Binary files a/test/font-matrix-translation.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-positioning.svg.ref.png b/test/ft-show-glyphs-positioning.svg.ref.png
new file mode 100644
index 0000000..04fe674
Binary files /dev/null and b/test/ft-show-glyphs-positioning.svg.ref.png differ
diff --git a/test/ft-show-glyphs-positioning.svg11.ref.png b/test/ft-show-glyphs-positioning.svg11.ref.png
deleted file mode 100644
index 43b83cb..0000000
Binary files a/test/ft-show-glyphs-positioning.svg11.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-positioning.svg12.ref.png b/test/ft-show-glyphs-positioning.svg12.ref.png
deleted file mode 100644
index 43b83cb..0000000
Binary files a/test/ft-show-glyphs-positioning.svg12.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-table.svg.ref.png b/test/ft-show-glyphs-table.svg.ref.png
new file mode 100644
index 0000000..e0654b7
Binary files /dev/null and b/test/ft-show-glyphs-table.svg.ref.png differ
diff --git a/test/ft-show-glyphs-table.svg11.argb32.ref.png b/test/ft-show-glyphs-table.svg11.argb32.ref.png
deleted file mode 100644
index 0c6e1c0..0000000
Binary files a/test/ft-show-glyphs-table.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-table.svg11.rgb24.ref.png b/test/ft-show-glyphs-table.svg11.rgb24.ref.png
deleted file mode 100644
index 0c6e1c0..0000000
Binary files a/test/ft-show-glyphs-table.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-table.svg12.argb32.ref.png b/test/ft-show-glyphs-table.svg12.argb32.ref.png
deleted file mode 100644
index 0c6e1c0..0000000
Binary files a/test/ft-show-glyphs-table.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/ft-show-glyphs-table.svg12.rgb24.ref.png b/test/ft-show-glyphs-table.svg12.rgb24.ref.png
deleted file mode 100644
index 0c6e1c0..0000000
Binary files a/test/ft-show-glyphs-table.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg.ref.png b/test/ft-text-vertical-layout-type1.svg.ref.png
new file mode 100644
index 0000000..0be400c
Binary files /dev/null and b/test/ft-text-vertical-layout-type1.svg.ref.png differ
diff --git a/test/ft-text-vertical-layout-type1.svg11.argb32.ref.png b/test/ft-text-vertical-layout-type1.svg11.argb32.ref.png
deleted file mode 100644
index 2de3f5b..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg11.ref.png b/test/ft-text-vertical-layout-type1.svg11.ref.png
deleted file mode 100644
index 4ad4268..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg11.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg11.rgb24.ref.png b/test/ft-text-vertical-layout-type1.svg11.rgb24.ref.png
deleted file mode 100644
index 2de3f5b..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg12.argb32.ref.png b/test/ft-text-vertical-layout-type1.svg12.argb32.ref.png
deleted file mode 100644
index 2de3f5b..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg12.ref.png b/test/ft-text-vertical-layout-type1.svg12.ref.png
deleted file mode 100644
index 4ad4268..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg12.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.svg12.rgb24.ref.png b/test/ft-text-vertical-layout-type1.svg12.rgb24.ref.png
deleted file mode 100644
index 2de3f5b..0000000
Binary files a/test/ft-text-vertical-layout-type1.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.test-fallback.argb32.ref.png b/test/ft-text-vertical-layout-type1.test-fallback.argb32.ref.png
deleted file mode 100644
index 9eba6bb..0000000
Binary files a/test/ft-text-vertical-layout-type1.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type1.test-fallback.rgb24.ref.png b/test/ft-text-vertical-layout-type1.test-fallback.rgb24.ref.png
deleted file mode 100644
index 9eba6bb..0000000
Binary files a/test/ft-text-vertical-layout-type1.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg.ref.png b/test/ft-text-vertical-layout-type3.svg.ref.png
new file mode 100644
index 0000000..cddb955
Binary files /dev/null and b/test/ft-text-vertical-layout-type3.svg.ref.png differ
diff --git a/test/ft-text-vertical-layout-type3.svg11.argb32.ref.png b/test/ft-text-vertical-layout-type3.svg11.argb32.ref.png
deleted file mode 100644
index cfe9268..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg11.ref.png b/test/ft-text-vertical-layout-type3.svg11.ref.png
deleted file mode 100644
index 7aa322d..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg11.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg11.rgb24.ref.png b/test/ft-text-vertical-layout-type3.svg11.rgb24.ref.png
deleted file mode 100644
index cfe9268..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg12.argb32.ref.png b/test/ft-text-vertical-layout-type3.svg12.argb32.ref.png
deleted file mode 100644
index cfe9268..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg12.ref.png b/test/ft-text-vertical-layout-type3.svg12.ref.png
deleted file mode 100644
index 7aa322d..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg12.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.svg12.rgb24.ref.png b/test/ft-text-vertical-layout-type3.svg12.rgb24.ref.png
deleted file mode 100644
index cfe9268..0000000
Binary files a/test/ft-text-vertical-layout-type3.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.test-fallback.argb32.ref.png b/test/ft-text-vertical-layout-type3.test-fallback.argb32.ref.png
deleted file mode 100644
index e57c083..0000000
Binary files a/test/ft-text-vertical-layout-type3.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/ft-text-vertical-layout-type3.test-fallback.rgb24.ref.png b/test/ft-text-vertical-layout-type3.test-fallback.rgb24.ref.png
deleted file mode 100644
index e57c083..0000000
Binary files a/test/ft-text-vertical-layout-type3.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/gradient-alpha.pdf.argb32.ref.png b/test/gradient-alpha.pdf.argb32.ref.png
deleted file mode 100644
index bf9c69a..0000000
Binary files a/test/gradient-alpha.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/gradient-alpha.pdf.rgb24.ref.png b/test/gradient-alpha.pdf.rgb24.ref.png
deleted file mode 100644
index 7985273..0000000
Binary files a/test/gradient-alpha.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/gradient-constant-alpha.pdf.argb32.ref.png b/test/gradient-constant-alpha.pdf.argb32.ref.png
deleted file mode 100644
index 056fcb2..0000000
Binary files a/test/gradient-constant-alpha.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/gradient-constant-alpha.pdf.rgb24.ref.png b/test/gradient-constant-alpha.pdf.rgb24.ref.png
deleted file mode 100644
index 60c0263..0000000
Binary files a/test/gradient-constant-alpha.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/group-unaligned.pdf.new.png b/test/group-unaligned.pdf.new.png
new file mode 100644
index 0000000..beb0ae2
Binary files /dev/null and b/test/group-unaligned.pdf.new.png differ
diff --git a/test/group-unaligned.pdf.ref.png b/test/group-unaligned.pdf.ref.png
deleted file mode 100644
index 0eb39c0..0000000
Binary files a/test/group-unaligned.pdf.ref.png and /dev/null differ
diff --git a/test/group-unaligned.svg.argb32.ref.png b/test/group-unaligned.svg.argb32.ref.png
deleted file mode 100644
index 91535f9..0000000
Binary files a/test/group-unaligned.svg.argb32.ref.png and /dev/null differ
diff --git a/test/group-unaligned.svg.argb32.xfail.png b/test/group-unaligned.svg.argb32.xfail.png
new file mode 100644
index 0000000..3855037
Binary files /dev/null and b/test/group-unaligned.svg.argb32.xfail.png differ
diff --git a/test/group-unaligned.svg.rgb24.ref.png b/test/group-unaligned.svg.rgb24.ref.png
deleted file mode 100644
index 42558a6..0000000
Binary files a/test/group-unaligned.svg.rgb24.ref.png and /dev/null differ
diff --git a/test/group-unaligned.svg.rgb24.xfail.png b/test/group-unaligned.svg.rgb24.xfail.png
new file mode 100644
index 0000000..c0f1861
Binary files /dev/null and b/test/group-unaligned.svg.rgb24.xfail.png differ
diff --git a/test/huge-linear.c b/test/huge-linear.c
index 304cac4..e57d299 100644
--- a/test/huge-linear.c
+++ b/test/huge-linear.c
@@ -61,7 +61,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (huge_linear,
 	    "Test huge linear patterns",
-	    "XFAIL=pdf gradient, linear", /* keywords */
+	    "gradient, linear", /* keywords */
 	    NULL, /* requirements */
 	    600, 350,
 	    NULL, draw)
diff --git a/test/huge-linear.pdf.ref.png b/test/huge-linear.pdf.ref.png
new file mode 100644
index 0000000..cf1f8fc
Binary files /dev/null and b/test/huge-linear.pdf.ref.png differ
diff --git a/test/huge-radial.c b/test/huge-radial.c
index 0e5aca1..7356244 100644
--- a/test/huge-radial.c
+++ b/test/huge-radial.c
@@ -63,7 +63,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (huge_radial,
 	    "Test huge radial patterns",
-	    "XFAIL=pdf gradient, radial", /* keywords */
+	    "gradient, radial", /* keywords */
 	    NULL, /* requirements */
 	    600, 350,
 	    NULL, draw)
diff --git a/test/huge-radial.pdf.argb32.ref.png b/test/huge-radial.pdf.argb32.ref.png
new file mode 100644
index 0000000..aa710ec
Binary files /dev/null and b/test/huge-radial.pdf.argb32.ref.png differ
diff --git a/test/huge-radial.pdf.rgb24.ref.png b/test/huge-radial.pdf.rgb24.ref.png
new file mode 100644
index 0000000..8cebd80
Binary files /dev/null and b/test/huge-radial.pdf.rgb24.ref.png differ
diff --git a/test/large-source-roi.c b/test/large-source-roi.c
index 226d97f..8709e4b 100644
--- a/test/large-source-roi.c
+++ b/test/large-source-roi.c
@@ -70,7 +70,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (large_source_roi,
 	    "Uses a all of a large source image.",
-	    "XFAIL stress, source", /* keywords */
+	    "stress, source", /* keywords */
 	    NULL, /* requirements */
 	    20, 20,
 	    NULL, draw)
diff --git a/test/large-source-roi.ref.png b/test/large-source-roi.ref.png
deleted file mode 100644
index 7192a6e..0000000
Binary files a/test/large-source-roi.ref.png and /dev/null differ
diff --git a/test/linear-gradient.pdf.ref.png b/test/linear-gradient.pdf.ref.png
deleted file mode 100644
index b221a95..0000000
Binary files a/test/linear-gradient.pdf.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg11.argb32.ref.png b/test/linear-gradient.svg11.argb32.ref.png
deleted file mode 100644
index ea0e723..0000000
Binary files a/test/linear-gradient.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg11.ref.png b/test/linear-gradient.svg11.ref.png
deleted file mode 100644
index 4ed4bfa..0000000
Binary files a/test/linear-gradient.svg11.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg11.rgb24.ref.png b/test/linear-gradient.svg11.rgb24.ref.png
deleted file mode 100644
index ea0e723..0000000
Binary files a/test/linear-gradient.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg12.argb32.ref.png b/test/linear-gradient.svg12.argb32.ref.png
deleted file mode 100644
index ea0e723..0000000
Binary files a/test/linear-gradient.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg12.ref.png b/test/linear-gradient.svg12.ref.png
deleted file mode 100644
index 4ed4bfa..0000000
Binary files a/test/linear-gradient.svg12.ref.png and /dev/null differ
diff --git a/test/linear-gradient.svg12.rgb24.ref.png b/test/linear-gradient.svg12.rgb24.ref.png
deleted file mode 100644
index ea0e723..0000000
Binary files a/test/linear-gradient.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/linear-gradient.test-fallback.argb32.ref.png b/test/linear-gradient.test-fallback.argb32.ref.png
deleted file mode 100644
index 8202880..0000000
Binary files a/test/linear-gradient.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/linear-gradient.test-fallback.rgb24.ref.png b/test/linear-gradient.test-fallback.rgb24.ref.png
deleted file mode 100644
index 8202880..0000000
Binary files a/test/linear-gradient.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/long-lines.c b/test/long-lines.c
index c3e6dd6..79fc98f 100644
--- a/test/long-lines.c
+++ b/test/long-lines.c
@@ -77,7 +77,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (long_lines,
 	    "Test long lines"
 	    "\nLong lines are not drawn due to the limitations of the internal 16.16 fixed-point coordinates",
-	    "XFAIL stroke, stress", /* keywords */
+	    "stroke, stress", /* keywords */
 	    NULL, /* requirements */
 	    SIZE * (LINE_NBR + 1), SIZE * (LINE_NBR + 1),
 	    NULL, draw)
diff --git a/test/long-lines.ref.png b/test/long-lines.ref.png
deleted file mode 100644
index 6119204..0000000
Binary files a/test/long-lines.ref.png and /dev/null differ
diff --git a/test/make-html.pl b/test/make-html.pl
index e9c84a1..9c0626d 100755
--- a/test/make-html.pl
+++ b/test/make-html.pl
@@ -81,7 +81,7 @@ foreach (<@files>) {
     $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'ref'} = $ref_path;
     $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'result'} = $6;
 
-    $teststats->{$2} = {"PASS" => 0, "FAIL" => 0, "XFAIL" => 0, "UNTESTED" => 0, "CRASHED" =>0}
+    $teststats->{$2} = {"PASS" => 0, "FAIL" => 0, "NEW" => 0, "XFAIL" => 0, "UNTESTED" => 0, "CRASHED" =>0}
       unless $teststats->{$2};
     ($teststats->{$2}->{$6})++;
 
@@ -160,6 +160,7 @@ printl '<title>Cairo Test Results</title>';
 printl '<style type="text/css">';
 printl 'a img { border: solid 1px #FFF; }';
 printl '.PASS { background-color: #0B0; min-width: 1em; }';
+printl '.NEW { background-color: #B70; }';
 printl '.FAIL { background-color: #B00; }';
 printl '.XFAIL { background-color: #BB0; }';
 printl '.UNTESTED { background-color: #555; }';
@@ -189,7 +190,11 @@ print '<tr><td></td>';
 foreach my $target (@targets) {
   print '<td>';
   print '<span class="PASSstr">', $teststats->{$target}->{"PASS"}, '</span>/';
-  print '<span class="FAILstr">', $teststats->{$target}->{"FAIL"} + $teststats->{$target}->{"CRASHED"}, '</span>/';
+  print '<span class="FAILstr">',
+	$teststats->{$target}->{"FAIL"} +
+	$teststats->{$target}->{"NEW"} +
+	$teststats->{$target}->{"CRASHED"},
+	'</span>/';
   print '<span class="XFAILstr">', $teststats->{$target}->{"XFAIL"}, '</span>/';
   print '<span class="UNTESTEDstr">', $teststats->{$target}->{"UNTESTED"}, '</span>';
   print '</td>';
@@ -245,6 +250,10 @@ foreach my $test (sort(keys %$tests)) {
                   $testline .= " ";
                   $testline .= img_for($testfiles{'ref'},1);
                 }
+              } elsif ($testres->{'result'} eq "NEW") {
+                if ($config_show_fail || $config_show_all) {
+                  $testline .= img_for($testfiles{'new'},1);
+                }
               } elsif ($testres->{'result'} eq "CRASHED") {
                  $testline .= "!!!CRASHED!!!";
               } elsif ($testres->{'result'} eq "XFAIL") {
diff --git a/test/mask-alpha.svg.rgb24.xfail.png b/test/mask-alpha.svg.rgb24.xfail.png
new file mode 100644
index 0000000..15ebf75
Binary files /dev/null and b/test/mask-alpha.svg.rgb24.xfail.png differ
diff --git a/test/mask-alpha.svg11.argb32.ref.png b/test/mask-alpha.svg11.argb32.ref.png
deleted file mode 100644
index fa9e82d..0000000
Binary files a/test/mask-alpha.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/mask-alpha.svg11.rgb24.ref.png b/test/mask-alpha.svg11.rgb24.ref.png
deleted file mode 100644
index 167eab4..0000000
Binary files a/test/mask-alpha.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/mask-alpha.svg12.argb32.ref.png b/test/mask-alpha.svg12.argb32.ref.png
deleted file mode 100644
index fa9e82d..0000000
Binary files a/test/mask-alpha.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/mask-alpha.svg12.rgb24.ref.png b/test/mask-alpha.svg12.rgb24.ref.png
deleted file mode 100644
index 167eab4..0000000
Binary files a/test/mask-alpha.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/mask-alpha.test-fallback.argb32.ref.png b/test/mask-alpha.test-fallback.argb32.ref.png
deleted file mode 100644
index a0b9017..0000000
Binary files a/test/mask-alpha.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/mask-ctm.svg11.argb32.ref.png b/test/mask-ctm.svg11.argb32.ref.png
deleted file mode 100644
index 049d5f0..0000000
Binary files a/test/mask-ctm.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/mask-ctm.svg12.argb32.ref.png b/test/mask-ctm.svg12.argb32.ref.png
deleted file mode 100644
index 049d5f0..0000000
Binary files a/test/mask-ctm.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/mask-glyphs.c b/test/mask-glyphs.c
index 045dcaf..213722d 100644
--- a/test/mask-glyphs.c
+++ b/test/mask-glyphs.c
@@ -169,7 +169,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (mask_glyphs,
 	    "Creates a mask using a distorted array of overlapping glyphs",
-	    "XFAIL=svg,pdf mask, glyphs", /* keywords */
+	    "mask, glyphs", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/mask-glyphs.pdf.ref.png b/test/mask-glyphs.pdf.ref.png
new file mode 100644
index 0000000..673ef92
Binary files /dev/null and b/test/mask-glyphs.pdf.ref.png differ
diff --git a/test/mask-glyphs.svg.ref.png b/test/mask-glyphs.svg.ref.png
new file mode 100644
index 0000000..e99c3cc
Binary files /dev/null and b/test/mask-glyphs.svg.ref.png differ
diff --git a/test/mask-surface-ctm.svg11.argb32.ref.png b/test/mask-surface-ctm.svg11.argb32.ref.png
deleted file mode 100644
index 049d5f0..0000000
Binary files a/test/mask-surface-ctm.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/mask-surface-ctm.svg12.argb32.ref.png b/test/mask-surface-ctm.svg12.argb32.ref.png
deleted file mode 100644
index 049d5f0..0000000
Binary files a/test/mask-surface-ctm.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/mask-transformed-similar.svg.ref.png b/test/mask-transformed-similar.svg.ref.png
new file mode 100644
index 0000000..a5b9b00
Binary files /dev/null and b/test/mask-transformed-similar.svg.ref.png differ
diff --git a/test/mask-transformed-similar.svg11.ref.png b/test/mask-transformed-similar.svg11.ref.png
deleted file mode 100644
index b4344cd..0000000
Binary files a/test/mask-transformed-similar.svg11.ref.png and /dev/null differ
diff --git a/test/mask-transformed-similar.svg12.ref.png b/test/mask-transformed-similar.svg12.ref.png
deleted file mode 100644
index b4344cd..0000000
Binary files a/test/mask-transformed-similar.svg12.ref.png and /dev/null differ
diff --git a/test/mask.pdf.argb32.ref.png b/test/mask.pdf.argb32.ref.png
deleted file mode 100644
index 30fecea..0000000
Binary files a/test/mask.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/mask.pdf.argb32.xfail.png b/test/mask.pdf.argb32.xfail.png
new file mode 100644
index 0000000..227d312
Binary files /dev/null and b/test/mask.pdf.argb32.xfail.png differ
diff --git a/test/mask.pdf.rgb24.ref.png b/test/mask.pdf.rgb24.ref.png
deleted file mode 100644
index 95a49b7..0000000
Binary files a/test/mask.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/mask.pdf.rgb24.xfail.png b/test/mask.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..bb8e99d
Binary files /dev/null and b/test/mask.pdf.rgb24.xfail.png differ
diff --git a/test/mask.svg.argb32.xfail.png b/test/mask.svg.argb32.xfail.png
new file mode 100644
index 0000000..30c8db0
Binary files /dev/null and b/test/mask.svg.argb32.xfail.png differ
diff --git a/test/mask.svg.rgb24.xfail.png b/test/mask.svg.rgb24.xfail.png
new file mode 100644
index 0000000..0203b52
Binary files /dev/null and b/test/mask.svg.rgb24.xfail.png differ
diff --git a/test/mask.svg11.argb32.ref.png b/test/mask.svg11.argb32.ref.png
deleted file mode 100644
index 3ce4d53..0000000
Binary files a/test/mask.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/mask.svg11.rgb24.ref.png b/test/mask.svg11.rgb24.ref.png
deleted file mode 100644
index 94e3800..0000000
Binary files a/test/mask.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/mask.svg12.argb32.ref.png b/test/mask.svg12.argb32.ref.png
deleted file mode 100644
index 3ce4d53..0000000
Binary files a/test/mask.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/mask.svg12.rgb24.ref.png b/test/mask.svg12.rgb24.ref.png
deleted file mode 100644
index 94e3800..0000000
Binary files a/test/mask.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/mask.test-fallback.argb32.ref.png b/test/mask.test-fallback.argb32.ref.png
deleted file mode 100644
index bba0f9f..0000000
Binary files a/test/mask.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/mask.test-fallback.rgb24.ref.png b/test/mask.test-fallback.rgb24.ref.png
deleted file mode 100644
index 49a5b36..0000000
Binary files a/test/mask.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.pdf.argb32.ref.png b/test/meta-surface-pattern.pdf.argb32.ref.png
new file mode 100644
index 0000000..7e3435b
Binary files /dev/null and b/test/meta-surface-pattern.pdf.argb32.ref.png differ
diff --git a/test/meta-surface-pattern.pdf.ref.png b/test/meta-surface-pattern.pdf.ref.png
deleted file mode 100644
index 2e561b2..0000000
Binary files a/test/meta-surface-pattern.pdf.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.pdf.rgb24.ref.png b/test/meta-surface-pattern.pdf.rgb24.ref.png
new file mode 100644
index 0000000..9fef6fe
Binary files /dev/null and b/test/meta-surface-pattern.pdf.rgb24.ref.png differ
diff --git a/test/meta-surface-pattern.svg.argb32.ref.png b/test/meta-surface-pattern.svg.argb32.ref.png
new file mode 100644
index 0000000..86f6b61
Binary files /dev/null and b/test/meta-surface-pattern.svg.argb32.ref.png differ
diff --git a/test/meta-surface-pattern.svg.rgb24.ref.png b/test/meta-surface-pattern.svg.rgb24.ref.png
new file mode 100644
index 0000000..bbd8936
Binary files /dev/null and b/test/meta-surface-pattern.svg.rgb24.ref.png differ
diff --git a/test/meta-surface-pattern.svg11.argb32.ref.png b/test/meta-surface-pattern.svg11.argb32.ref.png
deleted file mode 100644
index 9969574..0000000
Binary files a/test/meta-surface-pattern.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.svg11.rgb24.ref.png b/test/meta-surface-pattern.svg11.rgb24.ref.png
deleted file mode 100644
index dea9b9b..0000000
Binary files a/test/meta-surface-pattern.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.svg12.argb32.ref.png b/test/meta-surface-pattern.svg12.argb32.ref.png
deleted file mode 100644
index 9969574..0000000
Binary files a/test/meta-surface-pattern.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.svg12.rgb24.ref.png b/test/meta-surface-pattern.svg12.rgb24.ref.png
deleted file mode 100644
index dea9b9b..0000000
Binary files a/test/meta-surface-pattern.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/operator-alpha.c b/test/operator-alpha.c
index 473ef20..1ce4ecd 100644
--- a/test/operator-alpha.c
+++ b/test/operator-alpha.c
@@ -59,7 +59,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (operator_alpha,
 	    "Tests using set_operator() with an non-opaque source",
-	    "XFAIL=svg12 operator, alpha", /* keywords */
+	    "operator, alpha", /* keywords */
 	    NULL, /* requirements */
 	    (SIZE+PAD) * N_OPERATORS + PAD, SIZE + 2*PAD,
 	    NULL, draw)
diff --git a/test/operator-alpha.svg12.argb32.xfail.png b/test/operator-alpha.svg12.argb32.xfail.png
new file mode 100644
index 0000000..e821d20
Binary files /dev/null and b/test/operator-alpha.svg12.argb32.xfail.png differ
diff --git a/test/operator-alpha.svg12.rgb24.xfail.png b/test/operator-alpha.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..42d9dde
Binary files /dev/null and b/test/operator-alpha.svg12.rgb24.xfail.png differ
diff --git a/test/operator-clear.c b/test/operator-clear.c
index 7ce8535..b294dc0 100644
--- a/test/operator-clear.c
+++ b/test/operator-clear.c
@@ -191,7 +191,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (operator_clear,
 	    "Test of CAIRO_OPERATOR_CLEAR",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    IMAGE_WIDTH, IMAGE_HEIGHT,
 	    NULL, draw)
diff --git a/test/operator-clear.pdf.argb32.ref.png b/test/operator-clear.pdf.argb32.ref.png
deleted file mode 100644
index 258c61c..0000000
Binary files a/test/operator-clear.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/operator-clear.pdf.rgb24.ref.png b/test/operator-clear.pdf.rgb24.ref.png
deleted file mode 100644
index 55b44ad..0000000
Binary files a/test/operator-clear.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/operator-clear.svg12.argb32.xfail.png b/test/operator-clear.svg12.argb32.xfail.png
new file mode 100644
index 0000000..7dfbd28
Binary files /dev/null and b/test/operator-clear.svg12.argb32.xfail.png differ
diff --git a/test/operator-clear.svg12.rgb24.xfail.png b/test/operator-clear.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..c561bc3
Binary files /dev/null and b/test/operator-clear.svg12.rgb24.xfail.png differ
diff --git a/test/operator-clear.xlib.ref.png b/test/operator-clear.xlib.ref.png
new file mode 100644
index 0000000..d9a59b1
Binary files /dev/null and b/test/operator-clear.xlib.ref.png differ
diff --git a/test/operator-source.c b/test/operator-source.c
index ee115d0..8d77307 100644
--- a/test/operator-source.c
+++ b/test/operator-source.c
@@ -228,7 +228,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (operator_source,
 	    "Test of CAIRO_OPERATOR_SOURCE",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    IMAGE_WIDTH, IMAGE_HEIGHT,
 	    NULL, draw)
diff --git a/test/operator-source.pdf.argb32.ref.png b/test/operator-source.pdf.argb32.ref.png
deleted file mode 100644
index f42d5af..0000000
Binary files a/test/operator-source.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/operator-source.pdf.rgb24.ref.png b/test/operator-source.pdf.rgb24.ref.png
deleted file mode 100644
index 8269bc1..0000000
Binary files a/test/operator-source.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/operator-source.pdf.rgb24.xfail.png b/test/operator-source.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..9482ed8
Binary files /dev/null and b/test/operator-source.pdf.rgb24.xfail.png differ
diff --git a/test/operator-source.svg12.argb32.xfail.png b/test/operator-source.svg12.argb32.xfail.png
new file mode 100644
index 0000000..722e5ac
Binary files /dev/null and b/test/operator-source.svg12.argb32.xfail.png differ
diff --git a/test/operator-source.svg12.rgb24.xfail.png b/test/operator-source.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..5f445fc
Binary files /dev/null and b/test/operator-source.svg12.rgb24.xfail.png differ
diff --git a/test/operator-source.test-fallback.argb32.ref.png b/test/operator-source.test-fallback.argb32.ref.png
deleted file mode 100644
index 8aac39d..0000000
Binary files a/test/operator-source.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/operator-source.test-fallback.rgb24.ref.png b/test/operator-source.test-fallback.rgb24.ref.png
deleted file mode 100644
index ad37a60..0000000
Binary files a/test/operator-source.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/operator.c b/test/operator.c
index 39596e1..666fcaf 100644
--- a/test/operator.c
+++ b/test/operator.c
@@ -59,7 +59,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (operator,
 	    "Tests using set_operator()",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    (SIZE+PAD) * N_OPERATORS + PAD, SIZE + 2*PAD,
 	    NULL, draw)
diff --git a/test/operator.svg12.argb32.xfail.png b/test/operator.svg12.argb32.xfail.png
new file mode 100644
index 0000000..3996221
Binary files /dev/null and b/test/operator.svg12.argb32.xfail.png differ
diff --git a/test/operator.svg12.rgb24.xfail.png b/test/operator.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..198d4b1
Binary files /dev/null and b/test/operator.svg12.rgb24.xfail.png differ
diff --git a/test/over-above-source.c b/test/over-above-source.c
index 1a47aae..7191c8d 100644
--- a/test/over-above-source.c
+++ b/test/over-above-source.c
@@ -66,7 +66,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (over_above_source,
 	    "A simple test drawing a circle with OVER after a triangle drawn with SOURCE",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/over-above-source.svg12.rgb24.xfail.png b/test/over-above-source.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..b2939c2
Binary files /dev/null and b/test/over-above-source.svg12.rgb24.xfail.png differ
diff --git a/test/over-above-source.test-fallback.argb32.ref.png b/test/over-above-source.test-fallback.argb32.ref.png
deleted file mode 100644
index 8a0183a..0000000
Binary files a/test/over-above-source.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/over-above-source.test-fallback.rgb24.ref.png b/test/over-above-source.test-fallback.rgb24.ref.png
deleted file mode 100644
index 85c1997..0000000
Binary files a/test/over-above-source.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/over-around-source.c b/test/over-around-source.c
index 7ac68a1..531eda8 100644
--- a/test/over-around-source.c
+++ b/test/over-around-source.c
@@ -77,7 +77,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (over_around_source,
 	    "A simple test drawing a triangle with SOURCE between two circles drawn with OVER",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/over-around-source.svg12.argb32.xfail.png b/test/over-around-source.svg12.argb32.xfail.png
new file mode 100644
index 0000000..bb29538
Binary files /dev/null and b/test/over-around-source.svg12.argb32.xfail.png differ
diff --git a/test/over-around-source.svg12.rgb24.xfail.png b/test/over-around-source.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..bb29538
Binary files /dev/null and b/test/over-around-source.svg12.rgb24.xfail.png differ
diff --git a/test/over-around-source.test-fallback.argb32.ref.png b/test/over-around-source.test-fallback.argb32.ref.png
deleted file mode 100644
index fca7505..0000000
Binary files a/test/over-around-source.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/over-below-source.c b/test/over-below-source.c
index 36dc9cc..7fe5bd8 100644
--- a/test/over-below-source.c
+++ b/test/over-below-source.c
@@ -66,7 +66,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (over_below_source,
 	    "A simple test drawing a circle with OVER before a triangle drawn with SOURCE",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/over-below-source.svg12.argb32.xfail.png b/test/over-below-source.svg12.argb32.xfail.png
new file mode 100644
index 0000000..c80705b
Binary files /dev/null and b/test/over-below-source.svg12.argb32.xfail.png differ
diff --git a/test/over-below-source.svg12.rgb24.xfail.png b/test/over-below-source.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..c80705b
Binary files /dev/null and b/test/over-below-source.svg12.rgb24.xfail.png differ
diff --git a/test/over-between-source.c b/test/over-between-source.c
index e690cdd..ffb6572 100644
--- a/test/over-between-source.c
+++ b/test/over-between-source.c
@@ -77,7 +77,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (over_between_source,
 	    "A simple test drawing a circle with OVER between two triangles drawn with SOURCE",
-	    "XFAIL=12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    WIDTH, HEIGHT,
 	    NULL, draw)
diff --git a/test/over-between-source.svg12.argb32.xfail.png b/test/over-between-source.svg12.argb32.xfail.png
new file mode 100644
index 0000000..c80705b
Binary files /dev/null and b/test/over-between-source.svg12.argb32.xfail.png differ
diff --git a/test/over-between-source.svg12.rgb24.xfail.png b/test/over-between-source.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..c80705b
Binary files /dev/null and b/test/over-between-source.svg12.rgb24.xfail.png differ
diff --git a/test/over-between-source.test-fallback.argb32.ref.png b/test/over-between-source.test-fallback.argb32.ref.png
deleted file mode 100644
index a8fe66a..0000000
Binary files a/test/over-between-source.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/paint-source-alpha.c b/test/paint-source-alpha.c
index ecddc48..09e82b0 100644
--- a/test/paint-source-alpha.c
+++ b/test/paint-source-alpha.c
@@ -56,7 +56,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (paint_source_alpha,
 	    "Simple test of cairo_paint with a source surface with non-opaque alpha",
-	    "XFAIL=svg12 paint, alpha", /* keywords */
+	    "paint, alpha", /* keywords */
 	    NULL, /* requirements */
 	    32, 32,
 	    NULL, draw)
diff --git a/test/paint-source-alpha.svg.ref.png b/test/paint-source-alpha.svg.ref.png
new file mode 100644
index 0000000..763bb59
Binary files /dev/null and b/test/paint-source-alpha.svg.ref.png differ
diff --git a/test/paint-source-alpha.svg11.ref.png b/test/paint-source-alpha.svg11.ref.png
deleted file mode 100644
index 8736d44..0000000
Binary files a/test/paint-source-alpha.svg11.ref.png and /dev/null differ
diff --git a/test/paint-source-alpha.svg12.ref.png b/test/paint-source-alpha.svg12.ref.png
deleted file mode 100644
index 3b3a990..0000000
Binary files a/test/paint-source-alpha.svg12.ref.png and /dev/null differ
diff --git a/test/paint-with-alpha.svg.ref.png b/test/paint-with-alpha.svg.ref.png
new file mode 100644
index 0000000..c0df8eb
Binary files /dev/null and b/test/paint-with-alpha.svg.ref.png differ
diff --git a/test/paint-with-alpha.svg11.ref.png b/test/paint-with-alpha.svg11.ref.png
deleted file mode 100644
index 97a2100..0000000
Binary files a/test/paint-with-alpha.svg11.ref.png and /dev/null differ
diff --git a/test/paint-with-alpha.svg12.ref.png b/test/paint-with-alpha.svg12.ref.png
deleted file mode 100644
index 97a2100..0000000
Binary files a/test/paint-with-alpha.svg12.ref.png and /dev/null differ
diff --git a/test/path-precision.c b/test/path-precision.c
index b537102..3261fb4 100644
--- a/test/path-precision.c
+++ b/test/path-precision.c
@@ -27,6 +27,9 @@
 
 #include "cairo-test.h"
 
+/* we know that this is an inherent limitation in cairo */
+#define FAIL CAIRO_TEST_XFAILURE
+
 /* Test the idempotency of path construction and copying */
 
 static cairo_test_status_t
@@ -80,7 +83,7 @@ draw (cairo_t *cr, int width, int height)
 			    "Paths differ in header type after %d operations.\n"
 			    "Expected path operation %d, found %d.\n",
 			    n, src->header.type, dst->header.type);
-	    result = CAIRO_TEST_FAILURE;
+	    result = FAIL;
 	    break;
 	}
 
@@ -91,7 +94,7 @@ draw (cairo_t *cr, int width, int height)
 			    n,
 			    src[1].point.x, src[1].point.y,
 			    dst[1].point.x, dst[1].point.y);
-	    result = CAIRO_TEST_FAILURE;
+	    result = FAIL;
 	    break;
 	}
     }
@@ -102,7 +105,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (path_precision,
 	    "Check that the path append/copy is idempotent.",
-	    "XFAIL api", /* keywords */
+	    "api", /* keywords */
 	    NULL, /* requirements */
 	    0, 0,
 	    NULL, draw)
diff --git a/test/push-group.svg11.argb32.ref.png b/test/push-group.svg11.argb32.ref.png
deleted file mode 100644
index d695879..0000000
Binary files a/test/push-group.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/push-group.svg12.argb32.ref.png b/test/push-group.svg12.argb32.ref.png
deleted file mode 100644
index d695879..0000000
Binary files a/test/push-group.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/push-group.test-fallback.argb32.ref.png b/test/push-group.test-fallback.argb32.ref.png
deleted file mode 100644
index 7c5905a..0000000
Binary files a/test/push-group.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/push-group.test-fallback.rgb24.ref.png b/test/push-group.test-fallback.rgb24.ref.png
deleted file mode 100644
index 4586d5c..0000000
Binary files a/test/push-group.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/radial-gradient.svg11.ref.png b/test/radial-gradient.svg11.ref.png
deleted file mode 100644
index 7e04701..0000000
Binary files a/test/radial-gradient.svg11.ref.png and /dev/null differ
diff --git a/test/radial-gradient.svg12.ref.png b/test/radial-gradient.svg12.ref.png
deleted file mode 100644
index 7e04701..0000000
Binary files a/test/radial-gradient.svg12.ref.png and /dev/null differ
diff --git a/test/random-intersections.test-fallback.argb32.ref.png b/test/random-intersections.test-fallback.argb32.ref.png
deleted file mode 100644
index a35364d..0000000
Binary files a/test/random-intersections.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/random-intersections.test-fallback.rgb24.ref.png b/test/random-intersections.test-fallback.rgb24.ref.png
deleted file mode 100644
index a35364d..0000000
Binary files a/test/random-intersections.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/rotate-image-surface-paint.pdf.ref.png b/test/rotate-image-surface-paint.pdf.ref.png
deleted file mode 100644
index d5a9db6..0000000
Binary files a/test/rotate-image-surface-paint.pdf.ref.png and /dev/null differ
diff --git a/test/rotate-image-surface-paint.pdf.xfail.png b/test/rotate-image-surface-paint.pdf.xfail.png
new file mode 100644
index 0000000..043732d
Binary files /dev/null and b/test/rotate-image-surface-paint.pdf.xfail.png differ
diff --git a/test/rotate-image-surface-paint.svg.ref.png b/test/rotate-image-surface-paint.svg.ref.png
new file mode 100644
index 0000000..e0db245
Binary files /dev/null and b/test/rotate-image-surface-paint.svg.ref.png differ
diff --git a/test/rotate-image-surface-paint.svg11.ref.png b/test/rotate-image-surface-paint.svg11.ref.png
deleted file mode 100644
index 5a75aef..0000000
Binary files a/test/rotate-image-surface-paint.svg11.ref.png and /dev/null differ
diff --git a/test/rotate-image-surface-paint.svg12.ref.png b/test/rotate-image-surface-paint.svg12.ref.png
deleted file mode 100644
index 5a75aef..0000000
Binary files a/test/rotate-image-surface-paint.svg12.ref.png and /dev/null differ
diff --git a/test/scale-offset-image.c b/test/scale-offset-image.c
index 4c6894a..0eef22e 100644
--- a/test/scale-offset-image.c
+++ b/test/scale-offset-image.c
@@ -135,7 +135,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (scale_offset_image,
 	    "Tests drawing surfaces under various scales and transforms",
-	    "XFAIL=!ps,image,xlib-fallback,script surface scale-offset", /* keywords */
+	    "surface scale-offset", /* keywords */
 	    NULL, /* requirements */
 	    320, 320,
 	    NULL, draw)
diff --git a/test/scale-offset-image.pdf.argb32.ref.png b/test/scale-offset-image.pdf.argb32.ref.png
new file mode 100644
index 0000000..4c7fe28
Binary files /dev/null and b/test/scale-offset-image.pdf.argb32.ref.png differ
diff --git a/test/scale-offset-image.pdf.rgb24.ref.png b/test/scale-offset-image.pdf.rgb24.ref.png
new file mode 100644
index 0000000..12507d9
Binary files /dev/null and b/test/scale-offset-image.pdf.rgb24.ref.png differ
diff --git a/test/scale-offset-image.xfail.png b/test/scale-offset-image.xfail.png
new file mode 100644
index 0000000..3e0191a
Binary files /dev/null and b/test/scale-offset-image.xfail.png differ
diff --git a/test/scale-offset-image.xlib.xfail.png b/test/scale-offset-image.xlib.xfail.png
new file mode 100644
index 0000000..efb0091
Binary files /dev/null and b/test/scale-offset-image.xlib.xfail.png differ
diff --git a/test/scale-offset-similar.c b/test/scale-offset-similar.c
index 5b92f1a..daf7ffe 100644
--- a/test/scale-offset-similar.c
+++ b/test/scale-offset-similar.c
@@ -136,7 +136,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (scale_offset_similar,
 	    "Tests drawing surfaces under various scales and transforms",
-	    "XFAIL=!ps,image,xlib-fallback,script surface scale-offset", /* keywords */
+	    "surface scale-offset", /* keywords */
 	    NULL, /* requirements */
 	    320, 320,
 	    NULL, draw)
diff --git a/test/scale-offset-similar.pdf.argb32.ref.png b/test/scale-offset-similar.pdf.argb32.ref.png
new file mode 100644
index 0000000..7d0406d
Binary files /dev/null and b/test/scale-offset-similar.pdf.argb32.ref.png differ
diff --git a/test/scale-offset-similar.pdf.rgb24.ref.png b/test/scale-offset-similar.pdf.rgb24.ref.png
new file mode 100644
index 0000000..7d0406d
Binary files /dev/null and b/test/scale-offset-similar.pdf.rgb24.ref.png differ
diff --git a/test/scale-offset-similar.xfail.png b/test/scale-offset-similar.xfail.png
new file mode 100644
index 0000000..3e0191a
Binary files /dev/null and b/test/scale-offset-similar.xfail.png differ
diff --git a/test/scale-offset-similar.xlib.xfail.png b/test/scale-offset-similar.xlib.xfail.png
new file mode 100644
index 0000000..d58aeba
Binary files /dev/null and b/test/scale-offset-similar.xlib.xfail.png differ
diff --git a/test/scale-source-surface-paint.svg.argb32.xfail.png b/test/scale-source-surface-paint.svg.argb32.xfail.png
new file mode 100644
index 0000000..ed946d4
Binary files /dev/null and b/test/scale-source-surface-paint.svg.argb32.xfail.png differ
diff --git a/test/scale-source-surface-paint.svg.rgb24.xfail.png b/test/scale-source-surface-paint.svg.rgb24.xfail.png
new file mode 100644
index 0000000..7d065d4
Binary files /dev/null and b/test/scale-source-surface-paint.svg.rgb24.xfail.png differ
diff --git a/test/scale-source-surface-paint.svg11.argb32.ref.png b/test/scale-source-surface-paint.svg11.argb32.ref.png
deleted file mode 100644
index ed946d4..0000000
Binary files a/test/scale-source-surface-paint.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/scale-source-surface-paint.svg11.rgb24.ref.png b/test/scale-source-surface-paint.svg11.rgb24.ref.png
deleted file mode 100644
index d424dce..0000000
Binary files a/test/scale-source-surface-paint.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/scale-source-surface-paint.svg12.argb32.ref.png b/test/scale-source-surface-paint.svg12.argb32.ref.png
deleted file mode 100644
index ed946d4..0000000
Binary files a/test/scale-source-surface-paint.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/scale-source-surface-paint.svg12.rgb24.ref.png b/test/scale-source-surface-paint.svg12.rgb24.ref.png
deleted file mode 100644
index d424dce..0000000
Binary files a/test/scale-source-surface-paint.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/self-copy-overlap.c b/test/self-copy-overlap.c
index d9e6caa..2f49ab0 100644
--- a/test/self-copy-overlap.c
+++ b/test/self-copy-overlap.c
@@ -43,7 +43,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (self_copy_overlap,
 	    "Tests painting to itself using itself as the source"
 	    "\nBackends treat this case inconsistently---vector backends are creating snapshots.",
-	    "XFAIL=!image,test-meta,test-paginated,pdf,ps,svg self-copy", /* keywords */
+	    "self-copy", /* keywords */
 	    NULL, /* requirements */
 	    200, 200,
 	    NULL, draw)
diff --git a/test/self-copy-overlap.ref.png b/test/self-copy-overlap.ref.png
deleted file mode 100644
index a70e819..0000000
Binary files a/test/self-copy-overlap.ref.png and /dev/null differ
diff --git a/test/self-copy-overlap.rgb24.ref.png b/test/self-copy-overlap.rgb24.ref.png
deleted file mode 100644
index ec730f6..0000000
Binary files a/test/self-copy-overlap.rgb24.ref.png and /dev/null differ
diff --git a/test/self-intersecting.argb32.xfail.png b/test/self-intersecting.argb32.xfail.png
new file mode 100644
index 0000000..bf08d03
Binary files /dev/null and b/test/self-intersecting.argb32.xfail.png differ
diff --git a/test/self-intersecting.c b/test/self-intersecting.c
index 23a06c7..6719e93 100644
--- a/test/self-intersecting.c
+++ b/test/self-intersecting.c
@@ -78,7 +78,7 @@ draw (cairo_t *cr, int width, int height)
 CAIRO_TEST (self_intersecting,
 	    "Test strokes of self-intersecting paths"
 	    "\nSelf-intersecting strokes are wrong due to incremental trapezoidization.",
-	    "XFAIL stroke, trap", /* keywords */
+	    "stroke, trap", /* keywords */
 	    NULL, /* requirements */
 	    10, 20,
 	    NULL, draw)
diff --git a/test/self-intersecting.pdf.argb32.xfail.png b/test/self-intersecting.pdf.argb32.xfail.png
new file mode 100644
index 0000000..f29b0a6
Binary files /dev/null and b/test/self-intersecting.pdf.argb32.xfail.png differ
diff --git a/test/self-intersecting.pdf.rgb24.xfail.png b/test/self-intersecting.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..c32df82
Binary files /dev/null and b/test/self-intersecting.pdf.rgb24.xfail.png differ
diff --git a/test/self-intersecting.ps.argb32.xfail.png b/test/self-intersecting.ps.argb32.xfail.png
new file mode 100644
index 0000000..84fde01
Binary files /dev/null and b/test/self-intersecting.ps.argb32.xfail.png differ
diff --git a/test/self-intersecting.ps.rgb24.xfail.png b/test/self-intersecting.ps.rgb24.xfail.png
new file mode 100644
index 0000000..c813607
Binary files /dev/null and b/test/self-intersecting.ps.rgb24.xfail.png differ
diff --git a/test/self-intersecting.rgb24.xfail.png b/test/self-intersecting.rgb24.xfail.png
new file mode 100644
index 0000000..9529f09
Binary files /dev/null and b/test/self-intersecting.rgb24.xfail.png differ
diff --git a/test/self-intersecting.xlib.argb32.xfail.png b/test/self-intersecting.xlib.argb32.xfail.png
new file mode 100644
index 0000000..f644ed4
Binary files /dev/null and b/test/self-intersecting.xlib.argb32.xfail.png differ
diff --git a/test/self-intersecting.xlib.rgb24.xfail.png b/test/self-intersecting.xlib.rgb24.xfail.png
new file mode 100644
index 0000000..958215c
Binary files /dev/null and b/test/self-intersecting.xlib.rgb24.xfail.png differ
diff --git a/test/set-source.svg11.argb32.ref.png b/test/set-source.svg11.argb32.ref.png
deleted file mode 100644
index 754f1c4..0000000
Binary files a/test/set-source.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/set-source.svg12.argb32.ref.png b/test/set-source.svg12.argb32.ref.png
deleted file mode 100644
index 754f1c4..0000000
Binary files a/test/set-source.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/smask-fill.c b/test/smask-fill.c
index 289335c..cb38610 100644
--- a/test/smask-fill.c
+++ b/test/smask-fill.c
@@ -67,7 +67,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_fill,
 	    "Test the support of \"soft\" masks with fills",
-	    "XFAIL=pdf smask, fill", /* keywords */
+	    "smask, fill", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask-fill.svg.ref.png b/test/smask-fill.svg.ref.png
new file mode 100644
index 0000000..824e8cf
Binary files /dev/null and b/test/smask-fill.svg.ref.png differ
diff --git a/test/smask-fill.svg11.argb32.ref.png b/test/smask-fill.svg11.argb32.ref.png
deleted file mode 100644
index 57ae76e..0000000
Binary files a/test/smask-fill.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/smask-fill.svg11.ref.png b/test/smask-fill.svg11.ref.png
deleted file mode 100644
index 06ab12a..0000000
Binary files a/test/smask-fill.svg11.ref.png and /dev/null differ
diff --git a/test/smask-fill.svg11.rgb24.ref.png b/test/smask-fill.svg11.rgb24.ref.png
deleted file mode 100644
index 57ae76e..0000000
Binary files a/test/smask-fill.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/smask-fill.svg12.argb32.ref.png b/test/smask-fill.svg12.argb32.ref.png
deleted file mode 100644
index 57ae76e..0000000
Binary files a/test/smask-fill.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/smask-fill.svg12.ref.png b/test/smask-fill.svg12.ref.png
deleted file mode 100644
index 06ab12a..0000000
Binary files a/test/smask-fill.svg12.ref.png and /dev/null differ
diff --git a/test/smask-fill.svg12.rgb24.ref.png b/test/smask-fill.svg12.rgb24.ref.png
deleted file mode 100644
index 57ae76e..0000000
Binary files a/test/smask-fill.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/smask-fill.test-fallback.argb32.ref.png b/test/smask-fill.test-fallback.argb32.ref.png
deleted file mode 100644
index 3d375bb..0000000
Binary files a/test/smask-fill.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/smask-fill.test-fallback.rgb24.ref.png b/test/smask-fill.test-fallback.rgb24.ref.png
deleted file mode 100644
index 3d375bb..0000000
Binary files a/test/smask-fill.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/smask-image-mask.c b/test/smask-image-mask.c
index b3bba60..1418721 100644
--- a/test/smask-image-mask.c
+++ b/test/smask-image-mask.c
@@ -77,7 +77,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_image_mask,
 	    "Test the support of \"soft\" masks with a secondary image mask",
-	    "XFAIL=pdf smask, image", /* keywords */
+	    "smask, image", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask-mask.c b/test/smask-mask.c
index d52754c..11cff82 100644
--- a/test/smask-mask.c
+++ b/test/smask-mask.c
@@ -90,7 +90,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_mask,
 	    "Test the support of \"soft\" masks with a secondary mask",
-	    "XFAIL=pdf smask, mask", /* keywords */
+	    "smask, mask", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask-mask.pdf.xfail.png b/test/smask-mask.pdf.xfail.png
new file mode 100644
index 0000000..dac6855
Binary files /dev/null and b/test/smask-mask.pdf.xfail.png differ
diff --git a/test/smask-mask.svg.ref.png b/test/smask-mask.svg.ref.png
new file mode 100644
index 0000000..ae46036
Binary files /dev/null and b/test/smask-mask.svg.ref.png differ
diff --git a/test/smask-mask.svg11.ref.png b/test/smask-mask.svg11.ref.png
deleted file mode 100644
index 0820cd1..0000000
Binary files a/test/smask-mask.svg11.ref.png and /dev/null differ
diff --git a/test/smask-mask.svg12.ref.png b/test/smask-mask.svg12.ref.png
deleted file mode 100644
index 0820cd1..0000000
Binary files a/test/smask-mask.svg12.ref.png and /dev/null differ
diff --git a/test/smask-paint.c b/test/smask-paint.c
index e1cdaf0..ee781ca 100644
--- a/test/smask-paint.c
+++ b/test/smask-paint.c
@@ -75,7 +75,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_paint,
 	    "Test the support of \"soft\" masks with paints",
-	    "XFAIL=pdf smask, paint", /* keywords */
+	    "smask, paint", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask-paint.pdf.xfail.png b/test/smask-paint.pdf.xfail.png
new file mode 100644
index 0000000..db17590
Binary files /dev/null and b/test/smask-paint.pdf.xfail.png differ
diff --git a/test/smask-paint.svg.ref.png b/test/smask-paint.svg.ref.png
new file mode 100644
index 0000000..93a423f
Binary files /dev/null and b/test/smask-paint.svg.ref.png differ
diff --git a/test/smask-paint.svg11.ref.png b/test/smask-paint.svg11.ref.png
deleted file mode 100644
index 09c01de..0000000
Binary files a/test/smask-paint.svg11.ref.png and /dev/null differ
diff --git a/test/smask-paint.svg12.ref.png b/test/smask-paint.svg12.ref.png
deleted file mode 100644
index 09c01de..0000000
Binary files a/test/smask-paint.svg12.ref.png and /dev/null differ
diff --git a/test/smask-stroke.c b/test/smask-stroke.c
index c0fd90d..2a8e7e8 100644
--- a/test/smask-stroke.c
+++ b/test/smask-stroke.c
@@ -67,7 +67,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_stroke,
 	    "Test the support of \"soft\" masks with strokes",
-	    "XFAIL=pdf smask, stroke", /* keywords */
+	    "smask, stroke", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask-stroke.pdf.xfail.png b/test/smask-stroke.pdf.xfail.png
new file mode 100644
index 0000000..9a1a771
Binary files /dev/null and b/test/smask-stroke.pdf.xfail.png differ
diff --git a/test/smask-text.c b/test/smask-text.c
index d0e6069..c00aca4 100644
--- a/test/smask-text.c
+++ b/test/smask-text.c
@@ -77,7 +77,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask_text,
 	    "Test the support of \"soft\" masks with text",
-	    "XFAIL=pdf smask, text", /* keywords */
+	    "smask, text", /* keywords */
 	    NULL, /* keywords */
 	    120, 60,
 	    NULL, draw)
diff --git a/test/smask-text.pdf.ref.png b/test/smask-text.pdf.ref.png
new file mode 100644
index 0000000..fa49056
Binary files /dev/null and b/test/smask-text.pdf.ref.png differ
diff --git a/test/smask-text.ref.png b/test/smask-text.ref.png
index f001859..bb393b5 100644
Binary files a/test/smask-text.ref.png and b/test/smask-text.ref.png differ
diff --git a/test/smask-text.svg.ref.png b/test/smask-text.svg.ref.png
new file mode 100644
index 0000000..65f225e
Binary files /dev/null and b/test/smask-text.svg.ref.png differ
diff --git a/test/smask-text.svg11.argb32.ref.png b/test/smask-text.svg11.argb32.ref.png
deleted file mode 100644
index 5034526..0000000
Binary files a/test/smask-text.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/smask-text.svg11.ref.png b/test/smask-text.svg11.ref.png
deleted file mode 100644
index 2665370..0000000
Binary files a/test/smask-text.svg11.ref.png and /dev/null differ
diff --git a/test/smask-text.svg11.rgb24.ref.png b/test/smask-text.svg11.rgb24.ref.png
deleted file mode 100644
index 5034526..0000000
Binary files a/test/smask-text.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/smask-text.svg12.argb32.ref.png b/test/smask-text.svg12.argb32.ref.png
deleted file mode 100644
index 5034526..0000000
Binary files a/test/smask-text.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/smask-text.svg12.ref.png b/test/smask-text.svg12.ref.png
deleted file mode 100644
index 2665370..0000000
Binary files a/test/smask-text.svg12.ref.png and /dev/null differ
diff --git a/test/smask-text.svg12.rgb24.ref.png b/test/smask-text.svg12.rgb24.ref.png
deleted file mode 100644
index 5034526..0000000
Binary files a/test/smask-text.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/smask.c b/test/smask.c
index 1ff9f37..d28caca 100644
--- a/test/smask.c
+++ b/test/smask.c
@@ -115,7 +115,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (smask,
 	    "Test the support of \"soft\" masks",
-	    "XFAIL=pdf smask", /* keywords */
+	    "smask", /* keywords */
 	    NULL, /* requirements */
 	    60, 60,
 	    NULL, draw)
diff --git a/test/smask.pdf.xfail.png b/test/smask.pdf.xfail.png
new file mode 100644
index 0000000..1405cc0
Binary files /dev/null and b/test/smask.pdf.xfail.png differ
diff --git a/test/smask.ref.png b/test/smask.ref.png
index 2d98e43..e190454 100644
Binary files a/test/smask.ref.png and b/test/smask.ref.png differ
diff --git a/test/smask.svg.ref.png b/test/smask.svg.ref.png
new file mode 100644
index 0000000..b4ad527
Binary files /dev/null and b/test/smask.svg.ref.png differ
diff --git a/test/smask.svg11.ref.png b/test/smask.svg11.ref.png
deleted file mode 100644
index f188561..0000000
Binary files a/test/smask.svg11.ref.png and /dev/null differ
diff --git a/test/smask.svg12.ref.png b/test/smask.svg12.ref.png
deleted file mode 100644
index f188561..0000000
Binary files a/test/smask.svg12.ref.png and /dev/null differ
diff --git a/test/source-clip-scale.svg.ref.png b/test/source-clip-scale.svg.ref.png
new file mode 100644
index 0000000..bbf7c9b
Binary files /dev/null and b/test/source-clip-scale.svg.ref.png differ
diff --git a/test/source-clip-scale.svg11.ref.png b/test/source-clip-scale.svg11.ref.png
deleted file mode 100644
index 87c2917..0000000
Binary files a/test/source-clip-scale.svg11.ref.png and /dev/null differ
diff --git a/test/source-clip-scale.svg12.ref.png b/test/source-clip-scale.svg12.ref.png
deleted file mode 100644
index 87c2917..0000000
Binary files a/test/source-clip-scale.svg12.ref.png and /dev/null differ
diff --git a/test/surface-pattern-big-scale-down.c b/test/surface-pattern-big-scale-down.c
index 15cb3a2..698accb 100644
--- a/test/surface-pattern-big-scale-down.c
+++ b/test/surface-pattern-big-scale-down.c
@@ -119,7 +119,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (surface_pattern_big_scale_down,
 	    "Test scaled-down transformed not-repeated surface patterns with large images and offsets",
-	    "XFAIL transform", /* keywords */
+	    "transform", /* keywords */
 	    NULL, /* requirements */
 	    512, 16,
 	    NULL, draw)
diff --git a/test/surface-pattern-big-scale-down.ref.png b/test/surface-pattern-big-scale-down.ref.png
index 7a8f513..c050990 100644
Binary files a/test/surface-pattern-big-scale-down.ref.png and b/test/surface-pattern-big-scale-down.ref.png differ
diff --git a/test/surface-pattern-scale-down.pdf.argb32.ref.png b/test/surface-pattern-scale-down.pdf.argb32.ref.png
deleted file mode 100644
index dc4b3a3..0000000
Binary files a/test/surface-pattern-scale-down.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/surface-pattern-scale-down.pdf.ref.png b/test/surface-pattern-scale-down.pdf.ref.png
new file mode 100644
index 0000000..7874243
Binary files /dev/null and b/test/surface-pattern-scale-down.pdf.ref.png differ
diff --git a/test/surface-pattern-scale-down.pdf.rgb24.ref.png b/test/surface-pattern-scale-down.pdf.rgb24.ref.png
deleted file mode 100644
index dc4b3a3..0000000
Binary files a/test/surface-pattern-scale-down.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/surface-pattern-scale-up.pdf.argb32.ref.png b/test/surface-pattern-scale-up.pdf.argb32.ref.png
deleted file mode 100644
index c0a2896..0000000
Binary files a/test/surface-pattern-scale-up.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/surface-pattern-scale-up.pdf.ref.png b/test/surface-pattern-scale-up.pdf.ref.png
new file mode 100644
index 0000000..e7e7a81
Binary files /dev/null and b/test/surface-pattern-scale-up.pdf.ref.png differ
diff --git a/test/surface-pattern-scale-up.pdf.rgb24.ref.png b/test/surface-pattern-scale-up.pdf.rgb24.ref.png
deleted file mode 100644
index c0a2896..0000000
Binary files a/test/surface-pattern-scale-up.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/surface-pattern.pdf.ref.png b/test/surface-pattern.pdf.ref.png
deleted file mode 100644
index c663aff..0000000
Binary files a/test/surface-pattern.pdf.ref.png and /dev/null differ
diff --git a/test/surface-pattern.pdf.xfail.png b/test/surface-pattern.pdf.xfail.png
new file mode 100644
index 0000000..a43dc4d
Binary files /dev/null and b/test/surface-pattern.pdf.xfail.png differ
diff --git a/test/surface-pattern.ps.xfail.png b/test/surface-pattern.ps.xfail.png
new file mode 100644
index 0000000..02fbde8
Binary files /dev/null and b/test/surface-pattern.ps.xfail.png differ
diff --git a/test/surface-pattern.ps2.ref.png b/test/surface-pattern.ps2.ref.png
deleted file mode 100644
index b5c7b91..0000000
Binary files a/test/surface-pattern.ps2.ref.png and /dev/null differ
diff --git a/test/surface-pattern.ps3.ref.png b/test/surface-pattern.ps3.ref.png
deleted file mode 100644
index b5c7b91..0000000
Binary files a/test/surface-pattern.ps3.ref.png and /dev/null differ
diff --git a/test/surface-pattern.svg.ref.png b/test/surface-pattern.svg.ref.png
deleted file mode 100644
index cdbcf47..0000000
Binary files a/test/surface-pattern.svg.ref.png and /dev/null differ
diff --git a/test/surface-pattern.svg.xfail.png b/test/surface-pattern.svg.xfail.png
new file mode 100644
index 0000000..cdbcf47
Binary files /dev/null and b/test/surface-pattern.svg.xfail.png differ
diff --git a/test/text-pattern.pdf.argb32.ref.png b/test/text-pattern.pdf.argb32.ref.png
deleted file mode 100644
index 46a1696..0000000
Binary files a/test/text-pattern.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/text-pattern.pdf.argb32.xfail.png b/test/text-pattern.pdf.argb32.xfail.png
new file mode 100644
index 0000000..227058c
Binary files /dev/null and b/test/text-pattern.pdf.argb32.xfail.png differ
diff --git a/test/text-pattern.pdf.rgb24.ref.png b/test/text-pattern.pdf.rgb24.ref.png
deleted file mode 100644
index fefa84b..0000000
Binary files a/test/text-pattern.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/text-pattern.pdf.rgb24.xfail.png b/test/text-pattern.pdf.rgb24.xfail.png
new file mode 100644
index 0000000..a3a3720
Binary files /dev/null and b/test/text-pattern.pdf.rgb24.xfail.png differ
diff --git a/test/text-pattern.svg.argb32.ref.png b/test/text-pattern.svg.argb32.ref.png
new file mode 100644
index 0000000..f472858
Binary files /dev/null and b/test/text-pattern.svg.argb32.ref.png differ
diff --git a/test/text-pattern.svg.rgb24.ref.png b/test/text-pattern.svg.rgb24.ref.png
new file mode 100644
index 0000000..2b2064e
Binary files /dev/null and b/test/text-pattern.svg.rgb24.ref.png differ
diff --git a/test/text-pattern.svg11.argb32.ref.png b/test/text-pattern.svg11.argb32.ref.png
deleted file mode 100644
index 47ee89c..0000000
Binary files a/test/text-pattern.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/text-pattern.svg11.rgb24.ref.png b/test/text-pattern.svg11.rgb24.ref.png
deleted file mode 100644
index c1f76c2..0000000
Binary files a/test/text-pattern.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/text-pattern.svg12.argb32.ref.png b/test/text-pattern.svg12.argb32.ref.png
deleted file mode 100644
index 47ee89c..0000000
Binary files a/test/text-pattern.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/text-pattern.svg12.rgb24.ref.png b/test/text-pattern.svg12.rgb24.ref.png
deleted file mode 100644
index c1f76c2..0000000
Binary files a/test/text-pattern.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg.ref.png b/test/text-rotate.svg.ref.png
new file mode 100644
index 0000000..7ffd356
Binary files /dev/null and b/test/text-rotate.svg.ref.png differ
diff --git a/test/text-rotate.svg11.argb32.ref.png b/test/text-rotate.svg11.argb32.ref.png
deleted file mode 100644
index 4864046..0000000
Binary files a/test/text-rotate.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg11.ref.png b/test/text-rotate.svg11.ref.png
deleted file mode 100644
index 35fd019..0000000
Binary files a/test/text-rotate.svg11.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg11.rgb24.ref.png b/test/text-rotate.svg11.rgb24.ref.png
deleted file mode 100644
index 4864046..0000000
Binary files a/test/text-rotate.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg12.argb32.ref.png b/test/text-rotate.svg12.argb32.ref.png
deleted file mode 100644
index 4864046..0000000
Binary files a/test/text-rotate.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg12.ref.png b/test/text-rotate.svg12.ref.png
deleted file mode 100644
index 35fd019..0000000
Binary files a/test/text-rotate.svg12.ref.png and /dev/null differ
diff --git a/test/text-rotate.svg12.rgb24.ref.png b/test/text-rotate.svg12.rgb24.ref.png
deleted file mode 100644
index 4864046..0000000
Binary files a/test/text-rotate.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/text-transform.svg.ref.png b/test/text-transform.svg.ref.png
new file mode 100644
index 0000000..1473a64
Binary files /dev/null and b/test/text-transform.svg.ref.png differ
diff --git a/test/text-transform.svg11.argb32.ref.png b/test/text-transform.svg11.argb32.ref.png
deleted file mode 100644
index 0c4e57c..0000000
Binary files a/test/text-transform.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/text-transform.svg11.rgb24.ref.png b/test/text-transform.svg11.rgb24.ref.png
deleted file mode 100644
index 0c4e57c..0000000
Binary files a/test/text-transform.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/text-transform.svg12.argb32.ref.png b/test/text-transform.svg12.argb32.ref.png
deleted file mode 100644
index 0c4e57c..0000000
Binary files a/test/text-transform.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/text-transform.svg12.rgb24.ref.png b/test/text-transform.svg12.rgb24.ref.png
deleted file mode 100644
index 0c4e57c..0000000
Binary files a/test/text-transform.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/trap-clip.pdf.argb32.ref.png b/test/trap-clip.pdf.argb32.ref.png
deleted file mode 100644
index 4697690..0000000
Binary files a/test/trap-clip.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/trap-clip.pdf.rgb24.ref.png b/test/trap-clip.pdf.rgb24.ref.png
deleted file mode 100644
index 6ddbfa7..0000000
Binary files a/test/trap-clip.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/trap-clip.test-fallback.argb32.ref.png b/test/trap-clip.test-fallback.argb32.ref.png
deleted file mode 100644
index 319d835..0000000
Binary files a/test/trap-clip.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/trap-clip.test-fallback.rgb24.ref.png b/test/trap-clip.test-fallback.rgb24.ref.png
deleted file mode 100644
index 7ac5789..0000000
Binary files a/test/trap-clip.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/twin.svg.ref.png b/test/twin.svg.ref.png
index b5d4a31..628a83c 100644
Binary files a/test/twin.svg.ref.png and b/test/twin.svg.ref.png differ
diff --git a/test/unbounded-operator.c b/test/unbounded-operator.c
index f5e1faa..af1442b 100644
--- a/test/unbounded-operator.c
+++ b/test/unbounded-operator.c
@@ -180,7 +180,7 @@ draw (cairo_t *cr, int width, int height)
 
 CAIRO_TEST (unbounded_operator,
 	    "Operators with an effect for transparent source/mask",
-	    "XFAIL=svg12 operator", /* keywords */
+	    "operator", /* keywords */
 	    NULL, /* requirements */
 	    IMAGE_WIDTH, IMAGE_HEIGHT,
 	    NULL, draw)
diff --git a/test/unbounded-operator.svg12.argb32.xfail.png b/test/unbounded-operator.svg12.argb32.xfail.png
new file mode 100644
index 0000000..45b173f
Binary files /dev/null and b/test/unbounded-operator.svg12.argb32.xfail.png differ
diff --git a/test/unbounded-operator.svg12.rgb24.xfail.png b/test/unbounded-operator.svg12.rgb24.xfail.png
new file mode 100644
index 0000000..c369fd2
Binary files /dev/null and b/test/unbounded-operator.svg12.rgb24.xfail.png differ
diff --git a/test/unbounded-operator.test-fallback.rgb24.ref.png b/test/unbounded-operator.test-fallback.rgb24.ref.png
deleted file mode 100644
index 07c7ecf..0000000
Binary files a/test/unbounded-operator.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font-mask.svg.ref.png b/test/user-font-mask.svg.ref.png
new file mode 100644
index 0000000..1a8f2c8
Binary files /dev/null and b/test/user-font-mask.svg.ref.png differ
diff --git a/test/user-font-mask.svg11.ref.png b/test/user-font-mask.svg11.ref.png
deleted file mode 100644
index 55006bf..0000000
Binary files a/test/user-font-mask.svg11.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg.ref.png b/test/user-font-proxy.svg.ref.png
new file mode 100644
index 0000000..747750a
Binary files /dev/null and b/test/user-font-proxy.svg.ref.png differ
diff --git a/test/user-font-proxy.svg11.argb32.ref.png b/test/user-font-proxy.svg11.argb32.ref.png
deleted file mode 100644
index d2a7812..0000000
Binary files a/test/user-font-proxy.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg11.ref.png b/test/user-font-proxy.svg11.ref.png
deleted file mode 100644
index e5e9e9a..0000000
Binary files a/test/user-font-proxy.svg11.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg11.rgb24.ref.png b/test/user-font-proxy.svg11.rgb24.ref.png
deleted file mode 100644
index d2a7812..0000000
Binary files a/test/user-font-proxy.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg12.argb32.ref.png b/test/user-font-proxy.svg12.argb32.ref.png
deleted file mode 100644
index d2a7812..0000000
Binary files a/test/user-font-proxy.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg12.ref.png b/test/user-font-proxy.svg12.ref.png
deleted file mode 100644
index e5e9e9a..0000000
Binary files a/test/user-font-proxy.svg12.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.svg12.rgb24.ref.png b/test/user-font-proxy.svg12.rgb24.ref.png
deleted file mode 100644
index d2a7812..0000000
Binary files a/test/user-font-proxy.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.test-fallback.argb32.ref.png b/test/user-font-proxy.test-fallback.argb32.ref.png
deleted file mode 100644
index 9cccf31..0000000
Binary files a/test/user-font-proxy.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.test-fallback.rgb24.ref.png b/test/user-font-proxy.test-fallback.rgb24.ref.png
deleted file mode 100644
index 9cccf31..0000000
Binary files a/test/user-font-proxy.test-fallback.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font-rescale.svg.ref.png b/test/user-font-rescale.svg.ref.png
new file mode 100644
index 0000000..6ed2a19
Binary files /dev/null and b/test/user-font-rescale.svg.ref.png differ
diff --git a/test/user-font-rescale.svg11.ref.png b/test/user-font-rescale.svg11.ref.png
deleted file mode 100644
index 871e27e..0000000
Binary files a/test/user-font-rescale.svg11.ref.png and /dev/null differ
diff --git a/test/user-font-rescale.svg12.ref.png b/test/user-font-rescale.svg12.ref.png
deleted file mode 100644
index 871e27e..0000000
Binary files a/test/user-font-rescale.svg12.ref.png and /dev/null differ
diff --git a/test/user-font.svg.ref.png b/test/user-font.svg.ref.png
new file mode 100644
index 0000000..1ff6ea0
Binary files /dev/null and b/test/user-font.svg.ref.png differ
diff --git a/test/user-font.svg11.argb32.ref.png b/test/user-font.svg11.argb32.ref.png
deleted file mode 100644
index 3dc77ae..0000000
Binary files a/test/user-font.svg11.argb32.ref.png and /dev/null differ
diff --git a/test/user-font.svg11.ref.png b/test/user-font.svg11.ref.png
deleted file mode 100644
index 28ba652..0000000
Binary files a/test/user-font.svg11.ref.png and /dev/null differ
diff --git a/test/user-font.svg11.rgb24.ref.png b/test/user-font.svg11.rgb24.ref.png
deleted file mode 100644
index 3dc77ae..0000000
Binary files a/test/user-font.svg11.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font.svg12.argb32.ref.png b/test/user-font.svg12.argb32.ref.png
deleted file mode 100644
index 3dc77ae..0000000
Binary files a/test/user-font.svg12.argb32.ref.png and /dev/null differ
diff --git a/test/user-font.svg12.ref.png b/test/user-font.svg12.ref.png
deleted file mode 100644
index 28ba652..0000000
Binary files a/test/user-font.svg12.ref.png and /dev/null differ
diff --git a/test/user-font.svg12.rgb24.ref.png b/test/user-font.svg12.rgb24.ref.png
deleted file mode 100644
index 3dc77ae..0000000
Binary files a/test/user-font.svg12.rgb24.ref.png and /dev/null differ
diff --git a/test/user-font.test-fallback.argb32.ref.png b/test/user-font.test-fallback.argb32.ref.png
deleted file mode 100644
index 3080c69..0000000
Binary files a/test/user-font.test-fallback.argb32.ref.png and /dev/null differ
diff --git a/test/user-font.test-fallback.rgb24.ref.png b/test/user-font.test-fallback.rgb24.ref.png
deleted file mode 100644
index 3080c69..0000000
Binary files a/test/user-font.test-fallback.rgb24.ref.png and /dev/null differ
commit a81cf14bd6de545e9108f5c24c59e55026df86de
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jul 13 10:58:44 2009 +0100

    [test] Sanitise REFERENCE_IMAGES
    
    Add and delete files to satisfy 'make check-ref-missing'.

diff --git a/test/Makefile.am b/test/Makefile.am
index 56b7403..81add8c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -542,9 +542,7 @@ REFERENCE_IMAGES = \
 	leaky-polygon.ps2.ref.png \
 	leaky-polygon.ps3.ref.png \
 	leaky-polygon.ref.png \
-	linear-gradient.pdf.argb32.ref.png \
 	linear-gradient.pdf.ref.png \
-	linear-gradient.pdf.rgb24.ref.png \
 	linear-gradient.ps3.ref.png \
 	linear-gradient.quartz.ref.png \
 	linear-gradient-reflect.pdf.argb32.ref.png \
@@ -735,9 +733,7 @@ REFERENCE_IMAGES = \
 	quartz-surface-source.ps2.ref.png \
 	quartz-surface-source.ps3.ref.png \
 	quartz-surface-source.ref.png \
-	radial-gradient.pdf.argb32.ref.png \
 	radial-gradient.pdf.ref.png \
-	radial-gradient.pdf.rgb24.ref.png \
 	radial-gradient.quartz.ref.png \
 	radial-gradient.ref.png \
 	radial-gradient.svg11.ref.png \
@@ -868,9 +864,7 @@ REFERENCE_IMAGES = \
 	stroke-image.quartz.ref.png \
 	stroke-image.ref.png \
 	surface-pattern-big-scale-down.ref.png \
-	surface-pattern.pdf.argb32.ref.png \
 	surface-pattern.pdf.ref.png \
-	surface-pattern.pdf.rgb24.ref.png \
 	surface-pattern.ps2.ref.png \
 	surface-pattern.ps3.ref.png \
 	surface-pattern.ref.png \
diff --git a/test/fill-image.test-fallback.ref.png b/test/fill-image.test-fallback.ref.png
deleted file mode 100644
index c071335..0000000
Binary files a/test/fill-image.test-fallback.ref.png and /dev/null differ
diff --git a/test/fill-image.xlib.ref.png b/test/fill-image.xlib.ref.png
deleted file mode 100644
index c071335..0000000
Binary files a/test/fill-image.xlib.ref.png and /dev/null differ
diff --git a/test/group-unaligned.ref.png b/test/group-unaligned.ref.png
new file mode 100644
index 0000000..112cc48
Binary files /dev/null and b/test/group-unaligned.ref.png differ
diff --git a/test/meta-surface-pattern.pdf.argb32.ref.png b/test/meta-surface-pattern.pdf.argb32.ref.png
deleted file mode 100644
index 2ee9b7d..0000000
Binary files a/test/meta-surface-pattern.pdf.argb32.ref.png and /dev/null differ
diff --git a/test/meta-surface-pattern.pdf.rgb24.ref.png b/test/meta-surface-pattern.pdf.rgb24.ref.png
deleted file mode 100644
index 6555a26..0000000
Binary files a/test/meta-surface-pattern.pdf.rgb24.ref.png and /dev/null differ
diff --git a/test/operator-clear.test-fallback.ref.png b/test/operator-clear.test-fallback.ref.png
deleted file mode 100644
index 2f12e5e..0000000
Binary files a/test/operator-clear.test-fallback.ref.png and /dev/null differ
diff --git a/test/operator-clear.xlib.ref.png b/test/operator-clear.xlib.ref.png
deleted file mode 100644
index 2f12e5e..0000000
Binary files a/test/operator-clear.xlib.ref.png and /dev/null differ
commit 7f3eda4e9f9e6cb6f3a33871ed42099c822d0ea2
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jul 13 10:43:34 2009 +0100

    [test] Update reference images for gs 8.64

diff --git a/test/Makefile.am b/test/Makefile.am
index 25dd51a..56b7403 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -228,6 +228,7 @@ REFERENCE_IMAGES = \
 	close-path.ps3.ref.png \
 	close-path.ref.png \
 	close-path-current-point.ref.png \
+	close-path-current-point.ps.ref.png \
 	composite-integer-translate-over.ps2.ref.png \
 	composite-integer-translate-over.ps3.ref.png \
 	composite-integer-translate-over.ref.png \
@@ -309,6 +310,7 @@ REFERENCE_IMAGES = \
 	device-offset-scale.ref.png \
 	extend-pad-border.ref.png \
 	extend-pad.ref.png \
+	extend-pad.ps.ref.png \
 	extend-pad-similar.ref.png \
 	extend-reflect.ps2.ref.png \
 	extend-reflect.ps3.ref.png \
@@ -372,6 +374,7 @@ REFERENCE_IMAGES = \
 	fill-degenerate-sort-order.xlib.ref.png \
 	fill-degenerate-sort-order.xlib.rgb24.ref.png \
 	fill-image.ref.png \
+	fill-image.ps.ref.png \
 	fill-missed-stop.pdf.argb32.ref.png \
 	fill-missed-stop.ps2.argb32.ref.png \
 	fill-missed-stop.ps2.rgb24.ref.png \
@@ -885,6 +888,7 @@ REFERENCE_IMAGES = \
 	surface-pattern.svg.ref.png \
 	svg-surface-source.ref.png \
 	test-fallback16-surface-source.ref.png \
+	test-fallback16-surface-source.ps.ref.png \
 	text-antialias-gray.quartz.ref.png \
 	text-antialias-gray.ref.png \
 	text-antialias-none.quartz.ref.png \
@@ -966,8 +970,7 @@ REFERENCE_IMAGES = \
 	user-font-proxy.pdf.argb32.ref.png \
 	user-font-proxy.pdf.ref.png \
 	user-font-proxy.pdf.rgb24.ref.png \
-	user-font-proxy.ps2.ref.png \
-	user-font-proxy.ps3.ref.png \
+	user-font-proxy.ps.ref.png \
 	user-font-proxy.ref.png \
 	user-font-proxy.svg11.argb32.ref.png \
 	user-font-proxy.svg11.ref.png \
diff --git a/test/README b/test/README
index 8a6545c..3bc7c99 100644
--- a/test/README
+++ b/test/README
@@ -115,7 +115,7 @@ Here are some of the relevant details:
     the fixes you will need to avoid false negatives from the test
     suite.
 
-  * To test the ps backend, you will need ghostscript version 8.62.
+  * To test the ps backend, you will need ghostscript version 8.64.
 
   * Testing the xlib backend is problematic since many X server
     drivers have bugs that are exercised by the test suite. (Or, if
diff --git a/test/close-path-current-point.ps.ref.png b/test/close-path-current-point.ps.ref.png
new file mode 100644
index 0000000..1442f01
Binary files /dev/null and b/test/close-path-current-point.ps.ref.png differ
diff --git a/test/extend-pad.ps.ref.png b/test/extend-pad.ps.ref.png
new file mode 100644
index 0000000..a249ee2
Binary files /dev/null and b/test/extend-pad.ps.ref.png differ
diff --git a/test/fill-image.ps.ref.png b/test/fill-image.ps.ref.png
new file mode 100644
index 0000000..13bcc69
Binary files /dev/null and b/test/fill-image.ps.ref.png differ
diff --git a/test/test-fallback16-surface-source.ps.ref.png b/test/test-fallback16-surface-source.ps.ref.png
new file mode 100644
index 0000000..f686a06
Binary files /dev/null and b/test/test-fallback16-surface-source.ps.ref.png differ
diff --git a/test/user-font-proxy.ps.ref.png b/test/user-font-proxy.ps.ref.png
new file mode 100644
index 0000000..32951e5
Binary files /dev/null and b/test/user-font-proxy.ps.ref.png differ
diff --git a/test/user-font-proxy.ps2.ref.png b/test/user-font-proxy.ps2.ref.png
deleted file mode 100644
index 0d90244..0000000
Binary files a/test/user-font-proxy.ps2.ref.png and /dev/null differ
diff --git a/test/user-font-proxy.ps3.ref.png b/test/user-font-proxy.ps3.ref.png
deleted file mode 100644
index 0d90244..0000000
Binary files a/test/user-font-proxy.ps3.ref.png and /dev/null differ


More information about the cairo-commit mailing list