summaryrefslogtreecommitdiffstats
path: root/tests/baseline/painting
diff options
context:
space:
mode:
Diffstat (limited to 'tests/baseline/painting')
-rw-r--r--tests/baseline/painting/.gitignore1
-rw-r--r--tests/baseline/painting/CMakeLists.txt78
-rw-r--r--tests/baseline/painting/images.qrc34
-rw-r--r--tests/baseline/painting/images/alpha.pngbin0 -> 2422 bytes
-rw-r--r--tests/baseline/painting/images/alpha2x2.pngbin0 -> 78 bytes
-rw-r--r--tests/baseline/painting/images/bitmap.pngbin0 -> 254 bytes
-rw-r--r--tests/baseline/painting/images/border.pngbin0 -> 182 bytes
-rw-r--r--tests/baseline/painting/images/borderimage.pngbin0 -> 826 bytes
-rw-r--r--tests/baseline/painting/images/dome_argb32.pngbin0 -> 18234 bytes
-rw-r--r--tests/baseline/painting/images/dome_indexed.pngbin0 -> 7946 bytes
-rw-r--r--tests/baseline/painting/images/dome_indexed_mask.pngbin0 -> 5411 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono.pngbin0 -> 1391 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono_128.pngbin0 -> 2649 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono_palette.pngbin0 -> 1404 bytes
-rw-r--r--tests/baseline/painting/images/dome_rgb32.pngbin0 -> 17890 bytes
-rw-r--r--tests/baseline/painting/images/dot.pngbin0 -> 287 bytes
-rw-r--r--tests/baseline/painting/images/face.pngbin0 -> 2414 bytes
-rw-r--r--tests/baseline/painting/images/gam030.pngbin0 -> 213 bytes
-rw-r--r--tests/baseline/painting/images/gam045.pngbin0 -> 216 bytes
-rw-r--r--tests/baseline/painting/images/gam056.pngbin0 -> 216 bytes
-rw-r--r--tests/baseline/painting/images/gam100.pngbin0 -> 205 bytes
-rw-r--r--tests/baseline/painting/images/gam200.pngbin0 -> 187 bytes
-rw-r--r--tests/baseline/painting/images/image.pngbin0 -> 169554 bytes
-rw-r--r--tests/baseline/painting/images/mask.pngbin0 -> 274 bytes
-rw-r--r--tests/baseline/painting/images/mask_100.pngbin0 -> 319 bytes
-rw-r--r--tests/baseline/painting/images/masked.pngbin0 -> 788 bytes
-rw-r--r--tests/baseline/painting/images/sign.pngbin0 -> 10647 bytes
-rw-r--r--tests/baseline/painting/images/solid.pngbin0 -> 607 bytes
-rw-r--r--tests/baseline/painting/images/solid2x2.pngbin0 -> 75 bytes
-rw-r--r--tests/baseline/painting/images/struct-image-01.jpgbin0 -> 4751 bytes
-rw-r--r--tests/baseline/painting/images/struct-image-01.pngbin0 -> 63238 bytes
-rw-r--r--tests/baseline/painting/images/zebra.pngbin0 -> 426 bytes
-rw-r--r--tests/baseline/painting/scripts/aliasing.qps167
-rw-r--r--tests/baseline/painting/scripts/arcs.qps68
-rw-r--r--tests/baseline/painting/scripts/arcs2.qps54
-rw-r--r--tests/baseline/painting/scripts/background.qps136
-rw-r--r--tests/baseline/painting/scripts/background_brush.qps5
-rw-r--r--tests/baseline/painting/scripts/beziers.qps148
-rw-r--r--tests/baseline/painting/scripts/bitmaps.qps166
-rw-r--r--tests/baseline/painting/scripts/borderimage.qps120
-rw-r--r--tests/baseline/painting/scripts/brush_pens.qps104
-rw-r--r--tests/baseline/painting/scripts/brushes.qps88
-rw-r--r--tests/baseline/painting/scripts/clippath_antialiasing.qps76
-rw-r--r--tests/baseline/painting/scripts/clippaths.qps60
-rw-r--r--tests/baseline/painting/scripts/clipping.qps182
-rw-r--r--tests/baseline/painting/scripts/clipping_state.qps47
-rw-r--r--tests/baseline/painting/scripts/cliprects.qps352
-rw-r--r--tests/baseline/painting/scripts/conical_gradients.qps85
-rw-r--r--tests/baseline/painting/scripts/conical_gradients_perspectives.qps64
-rw-r--r--tests/baseline/painting/scripts/cosmetic.qps55
-rw-r--r--tests/baseline/painting/scripts/dashes.qps268
-rw-r--r--tests/baseline/painting/scripts/degeneratebeziers.qps47
-rw-r--r--tests/baseline/painting/scripts/deviceclipping.qps48
-rw-r--r--tests/baseline/painting/scripts/drawpoints.qps101
-rw-r--r--tests/baseline/painting/scripts/ellipses.qps86
-rw-r--r--tests/baseline/painting/scripts/fillrect.qps121
-rw-r--r--tests/baseline/painting/scripts/fillrect_aa.qps121
-rw-r--r--tests/baseline/painting/scripts/filltest.qps413
-rw-r--r--tests/baseline/painting/scripts/glyphruns.qps175
-rw-r--r--tests/baseline/painting/scripts/gradients.qps44
-rw-r--r--tests/baseline/painting/scripts/gradientxform_device.qps67
-rw-r--r--tests/baseline/painting/scripts/gradientxform_logical.qps67
-rw-r--r--tests/baseline/painting/scripts/gradientxform_object.qps83
-rw-r--r--tests/baseline/painting/scripts/hinting.qps26
-rw-r--r--tests/baseline/painting/scripts/image_dpr.qps43
-rw-r--r--tests/baseline/painting/scripts/image_formats.qps81
-rw-r--r--tests/baseline/painting/scripts/images.qps106
-rw-r--r--tests/baseline/painting/scripts/images2.qps145
-rw-r--r--tests/baseline/painting/scripts/join_cap_styles.qps63
-rw-r--r--tests/baseline/painting/scripts/join_cap_styles_duplicate_control_points.qps68
-rw-r--r--tests/baseline/painting/scripts/linear_gradients.qps144
-rw-r--r--tests/baseline/painting/scripts/linear_gradients_perspectives.qps62
-rw-r--r--tests/baseline/painting/scripts/linear_resolving_gradients.qps66
-rw-r--r--tests/baseline/painting/scripts/lineconsistency.qps72
-rw-r--r--tests/baseline/painting/scripts/linedashes.qps132
-rw-r--r--tests/baseline/painting/scripts/linedashes2.qps196
-rw-r--r--tests/baseline/painting/scripts/linedashes2_aa.qps5
-rw-r--r--tests/baseline/painting/scripts/lines.qps433
-rw-r--r--tests/baseline/painting/scripts/lines2.qps179
-rw-r--r--tests/baseline/painting/scripts/lines3.qps171
-rw-r--r--tests/baseline/painting/scripts/pathfill.qps38
-rw-r--r--tests/baseline/painting/scripts/paths.qps49
-rw-r--r--tests/baseline/painting/scripts/paths_aa.qps4
-rw-r--r--tests/baseline/painting/scripts/pattern_xform.qps79
-rw-r--r--tests/baseline/painting/scripts/pattern_xform2.qps81
-rw-r--r--tests/baseline/painting/scripts/pens.qps133
-rw-r--r--tests/baseline/painting/scripts/pens_aa.qps6
-rw-r--r--tests/baseline/painting/scripts/pens_cosmetic.qps116
-rw-r--r--tests/baseline/painting/scripts/perspectives.qps72
-rw-r--r--tests/baseline/painting/scripts/perspectives2.qps309
-rw-r--r--tests/baseline/painting/scripts/pixmap_rotation.qps31
-rw-r--r--tests/baseline/painting/scripts/pixmap_rotation2.qps8
-rw-r--r--tests/baseline/painting/scripts/pixmap_scaling.qps224
-rw-r--r--tests/baseline/painting/scripts/pixmap_subpixel.qps117
-rw-r--r--tests/baseline/painting/scripts/pixmapfragments.qps65
-rw-r--r--tests/baseline/painting/scripts/pixmaps.qps106
-rw-r--r--tests/baseline/painting/scripts/porter_duff.qps251
-rw-r--r--tests/baseline/painting/scripts/porter_duff2.qps261
-rw-r--r--tests/baseline/painting/scripts/primitives.qps184
-rw-r--r--tests/baseline/painting/scripts/radial_gradients.qps99
-rw-r--r--tests/baseline/painting/scripts/radial_gradients_perspectives.qps62
-rw-r--r--tests/baseline/painting/scripts/rasterops.qps87
-rw-r--r--tests/baseline/painting/scripts/richtext.qps9
-rw-r--r--tests/baseline/painting/scripts/sizes.qps90
-rw-r--r--tests/baseline/painting/scripts/smallcaps_path.qps9
-rw-r--r--tests/baseline/painting/scripts/statictext.qps175
-rw-r--r--tests/baseline/painting/scripts/text.qps199
-rw-r--r--tests/baseline/painting/scripts/text_perspectives.qps102
-rw-r--r--tests/baseline/painting/scripts/thinlines.qps79
-rw-r--r--tests/baseline/painting/scripts/tiled_pixmap.qps84
-rw-r--r--tests/baseline/painting/scripts/tinydashes.qps34
-rw-r--r--tests/baseline/painting/tst_baseline_painting.cpp489
112 files changed, 9375 insertions, 0 deletions
diff --git a/tests/baseline/painting/.gitignore b/tests/baseline/painting/.gitignore
new file mode 100644
index 0000000000..0a70416d57
--- /dev/null
+++ b/tests/baseline/painting/.gitignore
@@ -0,0 +1 @@
+tst_lancelot
diff --git a/tests/baseline/painting/CMakeLists.txt b/tests/baseline/painting/CMakeLists.txt
new file mode 100644
index 0000000000..72e737d227
--- /dev/null
+++ b/tests/baseline/painting/CMakeLists.txt
@@ -0,0 +1,78 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+#####################################################################
+## tst_baseline_painting Test:
+#####################################################################
+
+# Collect test data
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ scripts/*)
+list(APPEND test_data ${test_data_glob})
+
+qt_internal_add_test(tst_baseline_painting
+ SOURCES
+ ../shared/baselineprotocol.cpp ../shared/baselineprotocol.h ../shared/lookup3.cpp
+ ../shared/qbaselinetest.cpp ../shared/qbaselinetest.h
+ ../shared/paintcommands.cpp ../shared/paintcommands.h
+ tst_baseline_painting.cpp
+ NO_PCH_SOURCES
+ tst_baseline_painting.cpp # undef QT_NO_FOREACH
+ INCLUDE_DIRECTORIES
+ ../shared
+ LIBRARIES
+ Qt::Gui
+ Qt::GuiPrivate
+ Qt::Network
+ TESTDATA ${test_data}
+)
+
+# Resources:
+set(images_resource_files
+ "images/alpha.png"
+ "images/alpha2x2.png"
+ "images/bitmap.png"
+ "images/border.png"
+ "images/borderimage.png"
+ "images/dome_argb32.png"
+ "images/dome_indexed.png"
+ "images/dome_indexed_mask.png"
+ "images/dome_mono.png"
+ "images/dome_mono_128.png"
+ "images/dome_mono_palette.png"
+ "images/dome_rgb32.png"
+ "images/dot.png"
+ "images/face.png"
+ "images/gam030.png"
+ "images/gam045.png"
+ "images/gam056.png"
+ "images/gam100.png"
+ "images/gam200.png"
+ "images/image.png"
+ "images/mask.png"
+ "images/mask_100.png"
+ "images/masked.png"
+ "images/sign.png"
+ "images/solid.png"
+ "images/solid2x2.png"
+ "images/struct-image-01.jpg"
+ "images/struct-image-01.png"
+ "images/zebra.png"
+)
+
+qt_internal_add_resource(tst_baseline_painting "images"
+ PREFIX
+ "/"
+ FILES
+ ${images_resource_files}
+)
+
+
+## Scopes:
+#####################################################################
+
+qt_internal_extend_target(tst_baseline_painting CONDITION QT_FEATURE_opengl
+ LIBRARIES
+ Qt::OpenGL
+)
diff --git a/tests/baseline/painting/images.qrc b/tests/baseline/painting/images.qrc
new file mode 100644
index 0000000000..060b52c85a
--- /dev/null
+++ b/tests/baseline/painting/images.qrc
@@ -0,0 +1,34 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+<qresource>
+ <file>images/alpha.png</file>
+ <file>images/border.png</file>
+ <file>images/borderimage.png</file>
+ <file>images/dome_argb32.png</file>
+ <file>images/dome_indexed.png</file>
+ <file>images/dome_mono_palette.png</file>
+ <file>images/dome_rgb32.png</file>
+ <file>images/face.png</file>
+ <file>images/gam045.png</file>
+ <file>images/gam100.png</file>
+ <file>images/image.png</file>
+ <file>images/masked.png</file>
+ <file>images/sign.png</file>
+ <file>images/struct-image-01.jpg</file>
+ <file>images/bitmap.png</file>
+ <file>images/dome_indexed_mask.png</file>
+ <file>images/dome_mono_128.png</file>
+ <file>images/dome_mono.png</file>
+ <file>images/dot.png</file>
+ <file>images/gam030.png</file>
+ <file>images/gam056.png</file>
+ <file>images/gam200.png</file>
+ <file>images/mask_100.png</file>
+ <file>images/mask.png</file>
+ <file>images/solid.png</file>
+ <file>images/struct-image-01.png</file>
+ <file>images/zebra.png</file>
+ <file>images/alpha2x2.png</file>
+ <file>images/solid2x2.png</file>
+</qresource>
+</RCC>
diff --git a/tests/baseline/painting/images/alpha.png b/tests/baseline/painting/images/alpha.png
new file mode 100644
index 0000000000..e465b2586d
--- /dev/null
+++ b/tests/baseline/painting/images/alpha.png
Binary files differ
diff --git a/tests/baseline/painting/images/alpha2x2.png b/tests/baseline/painting/images/alpha2x2.png
new file mode 100644
index 0000000000..8e99feb4cc
--- /dev/null
+++ b/tests/baseline/painting/images/alpha2x2.png
Binary files differ
diff --git a/tests/baseline/painting/images/bitmap.png b/tests/baseline/painting/images/bitmap.png
new file mode 100644
index 0000000000..d21f8f51bb
--- /dev/null
+++ b/tests/baseline/painting/images/bitmap.png
Binary files differ
diff --git a/tests/baseline/painting/images/border.png b/tests/baseline/painting/images/border.png
new file mode 100644
index 0000000000..a3d2fed0a3
--- /dev/null
+++ b/tests/baseline/painting/images/border.png
Binary files differ
diff --git a/tests/baseline/painting/images/borderimage.png b/tests/baseline/painting/images/borderimage.png
new file mode 100644
index 0000000000..f7f6b66227
--- /dev/null
+++ b/tests/baseline/painting/images/borderimage.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_argb32.png b/tests/baseline/painting/images/dome_argb32.png
new file mode 100644
index 0000000000..e3ccba0c13
--- /dev/null
+++ b/tests/baseline/painting/images/dome_argb32.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_indexed.png b/tests/baseline/painting/images/dome_indexed.png
new file mode 100644
index 0000000000..beefcd514e
--- /dev/null
+++ b/tests/baseline/painting/images/dome_indexed.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_indexed_mask.png b/tests/baseline/painting/images/dome_indexed_mask.png
new file mode 100644
index 0000000000..a62f29f40e
--- /dev/null
+++ b/tests/baseline/painting/images/dome_indexed_mask.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_mono.png b/tests/baseline/painting/images/dome_mono.png
new file mode 100644
index 0000000000..950c2a7494
--- /dev/null
+++ b/tests/baseline/painting/images/dome_mono.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_mono_128.png b/tests/baseline/painting/images/dome_mono_128.png
new file mode 100644
index 0000000000..77e48aaab7
--- /dev/null
+++ b/tests/baseline/painting/images/dome_mono_128.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_mono_palette.png b/tests/baseline/painting/images/dome_mono_palette.png
new file mode 100644
index 0000000000..dca3f59245
--- /dev/null
+++ b/tests/baseline/painting/images/dome_mono_palette.png
Binary files differ
diff --git a/tests/baseline/painting/images/dome_rgb32.png b/tests/baseline/painting/images/dome_rgb32.png
new file mode 100644
index 0000000000..27bc02a545
--- /dev/null
+++ b/tests/baseline/painting/images/dome_rgb32.png
Binary files differ
diff --git a/tests/baseline/painting/images/dot.png b/tests/baseline/painting/images/dot.png
new file mode 100644
index 0000000000..17a7b6a0ba
--- /dev/null
+++ b/tests/baseline/painting/images/dot.png
Binary files differ
diff --git a/tests/baseline/painting/images/face.png b/tests/baseline/painting/images/face.png
new file mode 100644
index 0000000000..4f6172d83b
--- /dev/null
+++ b/tests/baseline/painting/images/face.png
Binary files differ
diff --git a/tests/baseline/painting/images/gam030.png b/tests/baseline/painting/images/gam030.png
new file mode 100644
index 0000000000..904c9721bd
--- /dev/null
+++ b/tests/baseline/painting/images/gam030.png
Binary files differ
diff --git a/tests/baseline/painting/images/gam045.png b/tests/baseline/painting/images/gam045.png
new file mode 100644
index 0000000000..b649a8a54f
--- /dev/null
+++ b/tests/baseline/painting/images/gam045.png
Binary files differ
diff --git a/tests/baseline/painting/images/gam056.png b/tests/baseline/painting/images/gam056.png
new file mode 100644
index 0000000000..e5f959dc96
--- /dev/null
+++ b/tests/baseline/painting/images/gam056.png
Binary files differ
diff --git a/tests/baseline/painting/images/gam100.png b/tests/baseline/painting/images/gam100.png
new file mode 100644
index 0000000000..6c7ba5f1ed
--- /dev/null
+++ b/tests/baseline/painting/images/gam100.png
Binary files differ
diff --git a/tests/baseline/painting/images/gam200.png b/tests/baseline/painting/images/gam200.png
new file mode 100644
index 0000000000..daa20fcbc4
--- /dev/null
+++ b/tests/baseline/painting/images/gam200.png
Binary files differ
diff --git a/tests/baseline/painting/images/image.png b/tests/baseline/painting/images/image.png
new file mode 100644
index 0000000000..85d486a790
--- /dev/null
+++ b/tests/baseline/painting/images/image.png
Binary files differ
diff --git a/tests/baseline/painting/images/mask.png b/tests/baseline/painting/images/mask.png
new file mode 100644
index 0000000000..c3f3b1b6ca
--- /dev/null
+++ b/tests/baseline/painting/images/mask.png
Binary files differ
diff --git a/tests/baseline/painting/images/mask_100.png b/tests/baseline/painting/images/mask_100.png
new file mode 100644
index 0000000000..fc950dc7ed
--- /dev/null
+++ b/tests/baseline/painting/images/mask_100.png
Binary files differ
diff --git a/tests/baseline/painting/images/masked.png b/tests/baseline/painting/images/masked.png
new file mode 100644
index 0000000000..6debec534d
--- /dev/null
+++ b/tests/baseline/painting/images/masked.png
Binary files differ
diff --git a/tests/baseline/painting/images/sign.png b/tests/baseline/painting/images/sign.png
new file mode 100644
index 0000000000..6aac7e150a
--- /dev/null
+++ b/tests/baseline/painting/images/sign.png
Binary files differ
diff --git a/tests/baseline/painting/images/solid.png b/tests/baseline/painting/images/solid.png
new file mode 100644
index 0000000000..371e9c1aee
--- /dev/null
+++ b/tests/baseline/painting/images/solid.png
Binary files differ
diff --git a/tests/baseline/painting/images/solid2x2.png b/tests/baseline/painting/images/solid2x2.png
new file mode 100644
index 0000000000..f34562f964
--- /dev/null
+++ b/tests/baseline/painting/images/solid2x2.png
Binary files differ
diff --git a/tests/baseline/painting/images/struct-image-01.jpg b/tests/baseline/painting/images/struct-image-01.jpg
new file mode 100644
index 0000000000..a74e07223b
--- /dev/null
+++ b/tests/baseline/painting/images/struct-image-01.jpg
Binary files differ
diff --git a/tests/baseline/painting/images/struct-image-01.png b/tests/baseline/painting/images/struct-image-01.png
new file mode 100644
index 0000000000..4ed08406dc
--- /dev/null
+++ b/tests/baseline/painting/images/struct-image-01.png
Binary files differ
diff --git a/tests/baseline/painting/images/zebra.png b/tests/baseline/painting/images/zebra.png
new file mode 100644
index 0000000000..ef35f20785
--- /dev/null
+++ b/tests/baseline/painting/images/zebra.png
Binary files differ
diff --git a/tests/baseline/painting/scripts/aliasing.qps b/tests/baseline/painting/scripts/aliasing.qps
new file mode 100644
index 0000000000..1fb0113396
--- /dev/null
+++ b/tests/baseline/painting/scripts/aliasing.qps
@@ -0,0 +1,167 @@
+
+path_moveTo convexPath 25 0
+path_lineTo convexPath 50 50
+path_lineTo convexPath 25 25
+path_lineTo convexPath 0 50
+path_closeSubpath convexPath
+
+pixmap_load border.png pixmap
+
+setRenderHint LineAntialiasing false
+translate 10 10
+
+begin_block drawing
+ setPen black 1
+ setBrush 7f7fff
+ drawPath convexPath
+
+ setFont "monospace" 8
+ setPen black
+ drawText 0 68 "QwErTy@"
+
+ setPen green 1 SolidLine
+ drawLine 0 75 10 75
+ setPen 800000ff 1
+ drawPoint 0 75
+ drawPoint 10 75
+
+ setPen green 2 SolidLine
+ drawLine 20 75 30 75
+ setPen 800000ff 2
+ drawPoint 20 75
+ drawPoint 30 75
+
+ setPen black 1
+ setBrush 7f7fff
+ drawRect 0 80 10 5
+
+ setPen black 1
+ setBrush noBrush
+ drawRect 20 80 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 80 10 5
+
+
+ setPen black 2
+ setBrush 7f7fff
+ drawRect 0 90 10 5
+
+ setPen black 2
+ setBrush noBrush
+ drawRect 20 90 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 90 10 5
+
+
+ setPen black 3
+ setBrush 7f7fff
+ drawRect 0 100 10 5
+
+ setPen black 3
+ setBrush noBrush
+ drawRect 20 100 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 100 10 5
+
+
+ setPen black 1
+ setBrush noBrush
+ drawLine 10 110 20 120
+ drawLine 30 120 40 110
+
+ setPen black 2
+ setBrush noBrush
+ drawLine 10 120 20 130
+ drawLine 30 130 40 120
+
+ setPen black 3
+ setBrush noBrush
+ drawLine 10 130 20 140
+ drawLine 30 140 40 130
+
+ drawPixmap pixmap 0 150
+
+ setRenderHint SmoothPixmapTransform false
+ drawPixmap pixmap 20 150 15 15 0 0 10 10
+
+end_block
+
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "0.0"
+
+resetMatrix
+translate 70.2 10.2
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.2 -0.2
+drawText 15 185 "0.2"
+
+
+resetMatrix
+translate 130.4 10.4
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.4 -0.4
+drawText 15 185 "0.4"
+
+
+resetMatrix
+translate 190.5 10.5
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.5 -0.5
+drawText 15 185 "0.5"
+
+
+resetMatrix
+translate 250.6 10.6
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.6 -0.6
+drawText 15 185 "0.6"
+
+
+resetMatrix
+translate 310.8 10.8
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.8 -0.8
+drawText 15 185 "0.8"
+
+
+resetMatrix
+translate 371 11
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "1.0"
+
+
+resetMatrix
+drawText 430 95 "Aliased"
+drawText 430 275 "Anti-Aliased"
diff --git a/tests/baseline/painting/scripts/arcs.qps b/tests/baseline/painting/scripts/arcs.qps
new file mode 100644
index 0000000000..8afaf73ff1
--- /dev/null
+++ b/tests/baseline/painting/scripts/arcs.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 5
+
+setRenderHint LineAntialiasing
+
+setPen red 0
+
+drawEllipse 0 0 600 400
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 0 10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 20 30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 60 45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 115 60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 180 90
+path_closeSubpath arcs
+
+path_moveTo arcs 590 200
+path_arcTo arcs 10 10 580 380 0 360
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 0 -10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -20 -30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -60 -45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -115 -60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -180 -90
+path_closeSubpath arcs
+
+setPen black 1 solidline
+setBrush #3f00ff00
+drawPath arcs
+
+# Then again with a matrix set...
+translate 200 400
+rotate 10
+scale 0.5 0.5
+setPen red 0
+setBrush nobrush
+drawEllipse 0 0 600 400
+
+setPen black 1 solidline
+setBrush #3f0000ff
+drawPath arcs \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/arcs2.qps b/tests/baseline/painting/scripts/arcs2.qps
new file mode 100644
index 0000000000..a2739a8c97
--- /dev/null
+++ b/tests/baseline/painting/scripts/arcs2.qps
@@ -0,0 +1,54 @@
+# Version: 1
+# CheckVsReference: 5
+
+drawArc 100 100 100 100 0 1440
+drawArc 100 100 100 100 1440 1440
+drawArc 100 100 100 100 2880 1440
+drawArc 100 100 100 100 4320 1440
+
+drawArc 100 200 100 100 0 -1440
+drawArc 100 200 100 100 -1440 -1440
+drawArc 100 200 100 100 -2880 -1440
+drawArc 100 200 100 100 -4320 -1440
+
+drawArc 200 100 100 100 720 1440
+drawArc 200 100 100 100 2160 1440
+drawArc 200 100 100 100 3600 1440
+drawArc 200 100 100 100 5040 1440
+
+drawArc 200 200 100 100 -720 -1440
+drawArc 200 200 100 100 -2160 -1440
+drawArc 200 200 100 100 -3600 -1440
+drawArc 200 200 100 100 -5040 -1440
+
+
+drawArc 300 100 100 100 3840 480
+drawArc 300 200 100 100 -3840 -480
+
+drawArc 300 100 100 100 1600 1340
+
+setPen black
+drawArc 400 100 200 200 0 5760
+setPen white
+drawArc 400 100 200 200 960 960
+drawArc 400 100 200 200 2880 960
+drawArc 400 100 200 200 4800 960
+
+setPen black
+drawArc 100 350 300 300 160 5760
+drawArc 100 350 300 300 320 5760
+drawArc 100 350 300 300 1920 5760
+drawArc 100 350 300 300 2080 5760
+drawArc 100 350 300 300 3680 5760
+drawArc 100 350 300 300 3840 5760
+drawArc 100 350 300 300 5440 5760
+drawArc 100 350 300 300 5600 5760
+setPen white
+drawArc 100 350 300 300 0 5760
+
+translate 400 300
+setRenderHint Antialiasing true
+setPen blue 40
+drawArc 100 100 200 200 0 4320
+setPen red 40
+drawArc 60 60 280 280 0 4320
diff --git a/tests/baseline/painting/scripts/background.qps b/tests/baseline/painting/scripts/background.qps
new file mode 100644
index 0000000000..d1efe5c178
--- /dev/null
+++ b/tests/baseline/painting/scripts/background.qps
@@ -0,0 +1,136 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 30
+setBackground 7f7fff
+setBackgroundMode Transparent
+setPen ff7f7f
+
+path_moveTo path 0 0
+path_lineTo path 25 0
+path_cubicTo path 50 0 25 25 25 50
+path_lineTo path 0 50
+
+bitmap_load bitmap.png bitmap
+
+begin_block drawing
+ save
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+
+ save
+ setRenderHint Antialiasing
+ translate 5 55
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+end_block
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Opaque
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode OpaqueMode
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+resetMatrix
+
+translate 5 5
+
+setBrush nobrush
+setPen black
+setBackgroundMode transparent
+drawText 10 15 "TransparentMode with solid 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 4-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with solid 4-width pen"
+drawRect 0 0 685 135
diff --git a/tests/baseline/painting/scripts/background_brush.qps b/tests/baseline/painting/scripts/background_brush.qps
new file mode 100644
index 0000000000..ca1f944964
--- /dev/null
+++ b/tests/baseline/painting/scripts/background_brush.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush #00ff00 crosspattern
+import "background.qps" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/beziers.qps b/tests/baseline/painting/scripts/beziers.qps
new file mode 100644
index 0000000000..62d9d031a6
--- /dev/null
+++ b/tests/baseline/painting/scripts/beziers.qps
@@ -0,0 +1,148 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setRenderHint LineAntialiasing
+
+setPen green 0
+
+translate 20 20
+path_moveTo fullSize 0 0
+path_cubicTo fullSize 200 100 -100 100 100 0
+
+path_moveTo fullSize 0 200
+path_cubicTo fullSize 0 100 100 100 100 200
+
+path_moveTo fullSize 0 250
+path_cubicTo fullSize 50 200 50 200 100 250
+drawPath fullSize
+
+translate 110 0
+scale 10 10
+path_moveTo medSize 0 0
+path_cubicTo medSize 20 10 -10 10 10 0
+
+path_moveTo medSize 0 20
+path_cubicTo medSize 0 10 10 10 10 20
+
+path_moveTo medSize 0 25
+path_cubicTo medSize 5 20 5 20 10 25
+drawPath medSize
+
+resetMatrix
+translate 240 20
+scale 100 100
+path_moveTo smallSize 0 0
+path_cubicTo smallSize 2 1 -1 1 1 0
+
+path_moveTo smallSize 0 2
+path_cubicTo smallSize 0 1 1 1 1 2
+
+path_moveTo smallSize 0 2.5
+path_cubicTo smallSize 0.5 2 0.5 2 1 2.5
+drawPath smallSize
+
+resetMatrix
+translate 20 300
+drawPath medSize
+
+resetMatrix
+translate 250 -100
+path_moveTo maxSize 0 500
+path_cubicTo maxSize 1000 0 -500 0 500 500
+drawPath maxSize
+
+setRenderHint Antialiasing off
+resetMatrix
+
+path_moveTo path1 0 0
+path_cubicTo path1 10 10 0 10 10 0
+
+path_moveTo path2 0 0
+path_cubicTo path2 15 15 -5 15 10 0
+
+path_moveTo path3 0 0
+path_cubicTo path3 20 20 -10 20 10 0
+
+path_moveTo path4 0 0
+path_cubicTo path4 0 5 10 10 0 15
+
+path_moveTo path5 0 10
+path_cubicTo path5 10 10 -10 20 0 0
+
+path_moveTo path6 0 0
+path_cubicTo path6 10 5 -10 10 0 15
+
+setPen black 2
+setBrush nobrush
+
+translate 10 500
+scale 3 3
+begin_block paths
+save
+drawPath path1
+translate 20 0
+drawPath path2
+translate 20 0
+drawPath path3
+translate 20 0
+drawPath path4
+translate 20 0
+drawPath path5
+translate 20 0
+drawPath path6
+restore
+end_block
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+setRenderHint Antialiasing
+
+setPen black 2
+setBrush nobrush
+
+translate 120 -20
+repeat_block paths
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+resetMatrix
+path_moveTo miterPath 20 0
+path_cubicTo miterPath 20 20 0 0 1 0
+path_lineTo miterPath -1 -0.2
+
+setBrush nobrush
+
+translate 50 660
+scale 5 5
+
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath
+setPen red 0
+drawPath miterPath
+
+path_moveTo miterPath2 21 0.2
+path_lineTo miterPath2 19 0
+path_cubicTo miterPath2 20 0 0 20 0 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath2
+setPen red 0
+drawPath miterPath2
+
+path_moveTo wonkyPath 0 0
+path_cubicTo wonkyPath 5 15 20 0 17 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath wonkyPath
+setPen red 0
+drawPath wonkyPath
diff --git a/tests/baseline/painting/scripts/bitmaps.qps b/tests/baseline/painting/scripts/bitmaps.qps
new file mode 100644
index 0000000000..4966490337
--- /dev/null
+++ b/tests/baseline/painting/scripts/bitmaps.qps
@@ -0,0 +1,166 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+#setRenderHint SmoothPixmapTransform
+
+translate 10 50
+setBackground ff7f7f
+setPen 3f3f9f
+
+bitmap_load dome_mono.png the_pixmap
+
+save
+ # Draw with opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+
+ translate 220 0
+
+ # Draw with alpha pen/bg in transparent/opaque mode
+ save
+ setBackground 7fff7f7f
+ setPen 7f3f3f9f
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+ restore
+
+ translate 220 0
+
+ # Draw with rotated opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+ setBackgroundMode Opaque
+ translate 110 0
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+restore
+
+translate 0 150
+
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100
+ restore
+restore
+
+translate 0 150
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100 10 20
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ restore
+restore
+
+
+pixmap_setMask the_pixmap mask_100.png
+drawPixmap the_pixmap 0 150
+setBackgroundMode Opaque
+drawPixmap the_pixmap 110 150
+
+translate 220 150
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+restore
+
+translate 110 0
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 0 0
+restore
+
+resetMatrix
+translate 10 650
+bitmap_load dome_mono.png the_bitmap
+setBackgroundMode Transparent
+
+begin_block draw_subrected
+ drawPixmap the_bitmap 0 0 50 50 0 0 50 50
+ drawPixmap the_bitmap 50 0 50 50 50 0 50 50
+ drawPixmap the_bitmap 0 50 50 50 0 50 50 50
+ drawPixmap the_bitmap 50 50 50 50 50 50 50 50
+end_block
+
+translate 110 0
+setBackgroundMode Opaque
+repeat_block draw_subrected
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Transparent
+ repeat_block draw_subrected
+restore
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Opaque
+ repeat_block draw_subrected
+restore
+
+# Some helpful texts
+
+resetMatrix
+setPen black
+drawText 10 40 "Transparent"
+drawText 120 40 "Opaque"
+drawText 230 40 "Trans w/alpha"
+drawText 340 40 "Opaque w/alpha"
+drawText 450 40 "Trans w/xform"
+drawText 560 40 "Opaque w/xform"
+
+drawText 10 190 "Transparent tiled"
+drawText 220 190 "Opaque tiled"
+drawText 440 190 "Opaque w/xform"
+
+drawText 10 340 "Transparent tiled w/offset"
+drawText 220 340 "Opaque tiled w/offset"
+drawText 440 340 "Opaque w/xform w/offset"
+
+drawText 10 490 "Trans masked"
+drawText 120 490 "Opaque masked"
+drawText 230 490 "masked w/xform"
+drawText 340 490 "masked w/xform"
+
+drawText 10 640 "Subrected"
+drawText 110 640 "Subrected opaque"
+drawText 220 640 "subrect w/xform"
+drawText 330 640 "subrect w/xform opaque"
+
+
diff --git a/tests/baseline/painting/scripts/borderimage.qps b/tests/baseline/painting/scripts/borderimage.qps
new file mode 100644
index 0000000000..ebd4f4d249
--- /dev/null
+++ b/tests/baseline/painting/scripts/borderimage.qps
@@ -0,0 +1,120 @@
+# Version: 1
+# CheckVsReference: 10%
+
+image_load borderimage.png borderimage
+translate -128 -128
+begin_block draw_border
+# top
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 36 16 16 0 32 16
+drawImage borderimage 52 0 16 16 48 0 16 16
+# sides
+drawImage borderimage 0 16 16 16 0 16 16 32
+drawImage borderimage 52 16 16 16 48 16 16 32
+#bottom
+drawImage borderimage 0 32 16 16 0 48 16 16
+drawImage borderimage 16 32 36 16 16 48 32 16
+drawImage borderimage 52 32 16 16 48 48 16 16
+end_block draw_border
+resetMatrix
+begin_block draw_column
+translate 1 1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+end_block draw_column
+setRenderHint Antialiasing
+resetMatrix
+translate 72 0
+repeat_block draw_column
+resetMatrix
+scale 1.25 1.25
+translate 144 0
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 0
+rotate 30
+repeat_block draw_border
+setRenderHint SmoothPixmapTransform
+resetMatrix
+scale 1.25 1.25
+translate 144 120
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 120
+rotate 30
+repeat_block draw_border
+resetMatrix
+translate 215 260
+scale 3.55 3.55
+rotate 30
+repeat_block draw_border
+resetMatrix
+setRenderHint SmoothPixmapTransform off
+setRenderHint Antialiasing off
+translate 480 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing
+translate 552 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing off
+translate 200.1 520.1
+begin_block one_pixel_border
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 64 16 16 0 1 1
+drawImage borderimage 80 0 16 16 48 0 16 16
+drawImage borderimage 0 16 16 64 16 0 1 1
+drawImage borderimage 80 16 16 64 16 0 1 1
+drawImage borderimage 0 80 16 16 0 48 16 16
+drawImage borderimage 16 80 64 16 16 0 1 1
+drawImage borderimage 80 80 16 16 48 48 16 16
+end_block one_pixel_border
+resetMatrix
+translate 205.1 626.1
+scale 0.4 0.4
+repeat_block one_pixel_border
+resetMatrix
+translate 255.1 624.1
+scale 0.4 0.4
+rotate 10
+repeat_block one_pixel_border
+resetMatrix
+setPen red
+drawRect 0 0 70 680
+drawText 10 670 "aa off"
+drawRect 72 0 70 680
+drawText 80 670 "aa on"
+drawRect 409 0 70 680
+drawText 419 650 "rot 180"
+drawText 419 670 "aa off"
+drawRect 481 0 70 680
+drawText 491 650 "rot 180"
+drawText 491 670 "aa on"
+drawRect 164 0 224 124
+drawText 174 114 "smoothpixmaptransform off"
+drawRect 164 128 224 134
+drawText 174 252 "smoothpixmaptransform on"
+drawRect 200 520 97 188
+drawText 210 698 "1x1 edges" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/brush_pens.qps b/tests/baseline/painting/scripts/brush_pens.qps
new file mode 100644
index 0000000000..b9a2bc0ada
--- /dev/null
+++ b/tests/baseline/painting/scripts/brush_pens.qps
@@ -0,0 +1,104 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect p 0 0 75 75
+path_addEllipse p 25 25 75 75
+
+translate 10 10
+
+begin_block setup_gradient
+ gradient_clearStops
+ gradient_appendStop 0 red
+ gradient_appendStop 0.1 blue
+ gradient_appendStop 0.2 yellow
+ gradient_appendStop 0.3 cyan
+ gradient_appendStop 0.4 magenta
+ gradient_appendStop 0.5 green
+ gradient_appendStop 0.6 black
+ gradient_appendStop 0.7 indianred
+ gradient_appendStop 0.8 white
+ gradient_appendStop 0.9 orange
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 100 100
+end_block
+
+setPen brush 0
+setBrush nobrush
+
+begin_block drawing
+ save
+ drawLine 0 0 100 100
+
+ translate 0 100
+ drawPath p
+
+ translate 0 110
+ drawRect 0 0 100 100
+
+ translate 0 110
+ drawPolyline [0 0 100 0 50 50]
+
+ drawPoint 40 40
+ drawPoint 41 40
+ drawPoint 42 40
+ drawPoint 43 40
+ drawPoint 44 40
+ drawPoint 45 40
+ drawPoint 46 40
+ drawPoint 47 40
+ drawPoint 48 40
+ drawPoint 49 40
+ drawPoint 50 40
+
+ restore
+end_block
+
+save
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 0
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore
+
+translate 0 0
+
+save
+ repeat_block setup_gradient
+ setPen brush 5
+ setBrush nobrush
+ translate 0 350
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 5
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/brushes.qps b/tests/baseline/painting/scripts/brushes.qps
new file mode 100644
index 0000000000..43a7843601
--- /dev/null
+++ b/tests/baseline/painting/scripts/brushes.qps
@@ -0,0 +1,88 @@
+# Version: 1
+# CheckVsReference: 5%
+
+# Fill the background
+drawRect 0 0 width height
+
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+
+translate 10 10
+# Draw all the pattern types as 40x40 rects using green, transparent background
+begin_block drawrects
+setBrush green Dense1Pattern
+drawRect 0 0 40 40
+setBrush green Dense2Pattern
+drawRect 40 0 40 40
+setBrush green Dense3Pattern
+drawRect 80 0 40 40
+setBrush green Dense4Pattern
+drawRect 120 0 40 40
+setBrush green Dense5Pattern
+drawRect 160 0 40 40
+setBrush green Dense6Pattern
+drawRect 200 0 40 40
+setBrush green Dense7Pattern
+drawRect 240 0 40 40
+setBrush green HorPattern
+drawRect 280 0 40 40
+setBrush green VerPattern
+drawRect 320 0 40 40
+setBrush green CrossPattern
+drawRect 360 0 40 40
+setBrush green BDiagPattern
+drawRect 400 0 40 40
+setBrush green FDiagPattern
+drawRect 440 0 40 40
+setBrush green DiagCrossPattern
+drawRect 480 0 40 40
+setBrush green SolidPattern
+drawRect 520 0 40 40
+setBrush green NoBrush
+drawRect 560 0 40 40
+gradient_setLinear 0 0 0 40
+drawRect 600 0 40 40
+setBrush face.png
+drawRect 640 0 80 40
+end_block
+
+# Switch to opaque mode
+setBackground #7fff7f
+setBackgroundMode OpaqueMode
+translate 0 50
+
+# Draw all the pattern types as 40x40 rects using green, opaque background
+repeat_block drawrects
+
+translate 50 50
+rotate 10
+
+
+setBackgroundMode TransparentMode
+repeat_block drawrects
+setBackgroundMode OpaqueMode
+translate 0 40
+repeat_block drawrects
+
+
+setBrush dot.png
+setPen nopen
+resetMatrix
+drawRect 0 200 50 50
+drawRect 50 200 50 50
+
+setPen red
+setBrushOrigin 0 250
+drawRect 0 250 50 50
+setBrushOrigin 50 250
+drawRect 50 250 50 50
+
+
+setBrush dome_indexed.png
+setPen nopen
+brushScale 0.7 0.7
+drawRect 20 320 600 200
+
+setBrush dome_argb32.png
+brushScale 1.5 1.5
+drawRect 20 540 600 200
diff --git a/tests/baseline/painting/scripts/clippath_antialiasing.qps b/tests/baseline/painting/scripts/clippath_antialiasing.qps
new file mode 100644
index 0000000000..193ce8b7ed
--- /dev/null
+++ b/tests/baseline/painting/scripts/clippath_antialiasing.qps
@@ -0,0 +1,76 @@
+# There was no serration in either case
+save
+setBrush black SolidPattern
+drawRect 0.0 0.0 500.0 300.0
+restore
+
+save
+setRenderHint Antialiasing true
+path_addEllipse mypath1 10.0 10.0 200.0 200.0
+path_addRect mypath1 10.0 210.0 200.0 40.0
+path_addPolygon mypath1 [ 10 250 50 280 90 300 130 300 170 280 210 250]
+
+setClipPath mypath1 ReplaceClip
+setPen NoPen
+setBrush cyan SolidPattern
+drawRect 10.0 10.0 400.0 400.0
+restore
+save
+setRenderHint Antialiasing false
+path_addEllipse mypath2 220.0 10.0 200.0 200.0
+path_addRect mypath2 220.0 210.0 200.0 40.0
+path_addPolygon mypath2 [ 220 250 270 280 300 300 340 300 380 280 420 250]
+setClipPath mypath2 ReplaceClip
+setRenderHint Antialiasing true
+setPen NoPen
+setBrush cyan SolidPattern
+drawRect 220.0 10.0 300.0 300.0
+restore
+
+setPen red
+setBrush NoBrush
+drawText 20 250 "Antialiasing before setClipPath"
+drawText 240 250 "Antialiasing after setClipPath"
+
+# Test that the clipping region is not abnormal after some transformations
+translate 100 300
+
+save
+path_addEllipse mypath3 10.0 10.0 200.0 200.0
+path_addRect mypath3 10.0 210.0 200.0 40.0
+setPen black SolidLine
+setBrush NoBrush
+setRenderHint Antialiasing true
+drawPath mypath3
+setClipPath mypath3 ReplaceClip
+rotate 60
+setFont "times" 10 Bold
+drawText 10 70 "Antialiasing before setClipPath - Transformation"
+drawText 10 40 "Antialiasing before setClipPath - Transformation"
+drawText 10 10 "Antialiasing before setClipPath - Transformation"
+drawText 10 -20 "Antialiasing before setClipPath - Transformation"
+drawText 10 -50 "Antialiasing before setClipPath - Transformation"
+drawText 10 -80 "Antialiasing before setClipPath - Transformation"
+restore
+
+translate 0 250
+
+save
+path_addEllipse mypath4 10.0 10.0 200.0 200.0
+path_addRect mypath4 10.0 210.0 200.0 40.0
+setPen black SolidLine
+setBrush NoBrush
+drawPath mypath4
+setClipPath mypath4 ReplaceClip
+setRenderHint Antialiasing true
+rotate 60
+setFont "times" 10 Bold
+drawText 10 70 "Antialiasing after setClipPath - Transformation"
+drawText 10 40 "Antialiasing after setClipPath - Transformation"
+drawText 10 10 "Antialiasing after setClipPath - Transformation"
+drawText 10 -20 "Antialiasing after setClipPath - Transformation"
+drawText 10 -50 "Antialiasing after setClipPath - Transformation"
+drawText 10 -80 "Antialiasing after setClipPath - Transformation"
+restore
+
+
diff --git a/tests/baseline/painting/scripts/clippaths.qps b/tests/baseline/painting/scripts/clippaths.qps
new file mode 100644
index 0000000000..fe8e198a17
--- /dev/null
+++ b/tests/baseline/painting/scripts/clippaths.qps
@@ -0,0 +1,60 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect hor 0 0 50 10
+path_addRect ver 0 0 10 50
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+
diff --git a/tests/baseline/painting/scripts/clipping.qps b/tests/baseline/painting/scripts/clipping.qps
new file mode 100644
index 0000000000..3694ff2ba7
--- /dev/null
+++ b/tests/baseline/painting/scripts/clipping.qps
@@ -0,0 +1,182 @@
+# Version: 1
+# CheckVsReference: 5%
+
+region_addRect clip 50 0 90 190
+region_addRect clip 0 50 180 90
+
+region_addRect clip2 30 30 60 60
+
+region_addRect clip3 10 10 60 60
+
+path_cubicTo path 90 0 50 50 90 90
+path_cubicTo path 0 90 50 50 0 0
+
+path_addRect path2 0 0 90 90
+path_moveTo path2 90 45
+path_arcTo path2 0 0 90 90 0 -360
+
+path_addRect emptypath 0 0 0 0
+region_addRect emptyregion 0 0 0 0
+
+# Normal clip rect
+setClipRect 0 0 50 150
+begin_block repaint
+save
+setBrush red
+setPen nopen
+resetMatrix
+region_getClipRegion tmpclip
+path_getClipPath tmpclippath
+drawRect 0 0 width height
+setBrush #3f0000ff
+setClipRegion tmpclip
+drawRect 0 0 width height
+setClipPath tmpclippath
+setBrush #3f00ff00
+drawRect 0 0 width height
+restore
+end_block
+
+# Rotated clip rect
+translate 100 0
+rotate 10
+setClipRect 0 0 50 150
+repeat_block repaint
+
+# simple clip region
+resetMatrix
+translate 0 200
+setClipRegion clip
+repeat_block repaint
+
+# simle rotated clip region
+translate 250 -10
+rotate 10
+setClipRegion clip
+repeat_block repaint
+
+# verify that clip is not xformed with painter
+resetMatrix
+translate 200 0
+setClipRegion clip
+rotate 30
+setBrush red
+setPen nopen
+drawRect 0 0 width height
+
+resetMatrix
+translate 0 400
+save
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+restore
+
+translate 100 0
+save
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+repeat_block repaint
+translate 50 100
+rotate 45
+setClipPath path
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path UniteClip
+repeat_block repaint
+restore
+
+# test that an empty region is not drawn.
+resetMatrix
+setClipRegion emptyregion
+setBrush #3f00ff00
+drawRect 0 0 300 300
+drawText 50 50 "Text should be clipped away by region"
+setClipping false
+
+setClipPath emptypath
+setBrush #3fffff00
+drawRect 50 50 300 300
+drawText 70 80 "Text should be clipped away by path"
+
+# Test that we can extract a clipregion when a matrix is set too
+resetMatrix
+translate 500 10
+scale 2 1
+setBrush blue
+setClipping false
+rotate 5
+drawRect 0 0 100 100
+setClipRect 0 0 100 100
+resetMatrix
+rotate 10
+region_getClipRegion xclip
+setClipRegion xclip
+resetMatrix
+setBrush #7f00ff00
+drawRect 0 0 width height
+
+# the below used to assert in debug mode
+setClipRect 10 10 20 20
+setClipping false
+setClipping true \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/clipping_state.qps b/tests/baseline/painting/scripts/clipping_state.qps
new file mode 100644
index 0000000000..a29d3738c8
--- /dev/null
+++ b/tests/baseline/painting/scripts/clipping_state.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path1 10 10 50 50
+path_addRect path2 30 30 50 50
+# enable/disable a clip path
+setPen nopen
+setBrush red
+setClipPath path1
+setClipPath path2 UniteClip
+drawRect 0 0 100 100
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 0 0 100 100
+# enable/disable noclip
+translate 150 0
+setClipPath path1 NoClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# enable/disable full clipping
+translate 150 0
+path_addRect path3 0 0 10 10
+path_addRect path4 20 20 10 10
+setClipPath path3
+setClipPath path4 IntersectClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# disable clipping followed by setClipRect
+translate 150 0
+setClipRect 0 0 50 50 ReplaceClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipRect 25 25 75 75 IntersectClip
+setBrush #6300ff00
+drawRect 25 25 50 50 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/cliprects.qps b/tests/baseline/painting/scripts/cliprects.qps
new file mode 100644
index 0000000000..cbc2a90055
--- /dev/null
+++ b/tests/baseline/painting/scripts/cliprects.qps
@@ -0,0 +1,352 @@
+# Version: 1
+# CheckVsReference: 5%
+
+save
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+restore
+
+# Excercise combining different clips
+
+translate 0 250
+scale 0.9 0.9
+setFont "times" 10 bold
+region_addRect dummyRegion 1000 1000 10 10
+region_addRect realRegion 20 10 60 30
+path_addRect dummyPath 1000 1000 10 10
+path_addRect realPath 20 10 60 30
+begin_block paintstuff
+fillRect 0 0 100 50 orange
+drawText 0 5 "Should be clipped"
+drawText 0 15 "Should be clipped"
+drawText 0 25 "Should be clipped"
+drawText 0 35 "Should be clipped"
+drawText 0 45 "Should be clipped"
+drawText 0 55 "Should be clipped"
+end_block
+
+translate 0 100
+
+# rect replaced by x
+save
+setClipRect 1000 1000 10 10 ReplaceClip
+setClipRect 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 1000 1000 10 10 ReplaceClip
+setClipRectF 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 1000 1000 10 10 ReplaceClip
+setClipRegion realRegion ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 1000 1000 10 10 ReplaceClip
+setClipPath realPath ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+# rectF replaced by x
+save
+setClipRectF 1000 1000 10 10 ReplaceClip
+setClipRect 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 1000 1000 10 10 ReplaceClip
+setClipRectF 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 1000 1000 10 10 ReplaceClip
+setClipRegion realRegion ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 1000 1000 10 10 ReplaceClip
+setClipPath realPath ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+translate -800 100
+
+# region replaced by x
+save
+setClipRegion dummyRegion ReplaceClip
+setClipRect 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion dummyRegion ReplaceClip
+setClipRectF 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion dummyRegion ReplaceClip
+setClipRegion realRegion ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion dummyRegion ReplaceClip
+setClipPath realPath ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+# path replaced by x
+save
+setClipPath dummyPath ReplaceClip
+setClipRect 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath dummyPath ReplaceClip
+setClipRectF 20 10 60 30 ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath dummyPath ReplaceClip
+setClipRegion realRegion ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath dummyPath ReplaceClip
+setClipPath realPath ReplaceClip
+repeat_block paintstuff
+restore
+translate 100 0
+
+region_addRect intregion 0 10 60 30
+path_addRect intpath 0 10 60 30
+
+translate -800 100
+# rect & x
+save
+setClipRect 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRect 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRectF 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRegion intregion IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRect 0 10 60 30 ReplaceClip
+translate 40 0
+setClipPath intpath IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+# rectF & x
+save
+setClipRectF 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRect 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRectF 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 0 10 60 30 ReplaceClip
+translate 40 0
+setClipRegion intregion IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRectF 0 10 60 30 ReplaceClip
+translate 40 0
+setClipPath intpath IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+translate -800 100
+
+# region & x
+save
+setClipRegion intregion ReplaceClip
+translate 40 0
+setClipRect 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion intregion ReplaceClip
+translate 40 0
+setClipRectF 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion intregion ReplaceClip
+translate 40 0
+setClipRegion intregion IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipRegion intregion ReplaceClip
+translate 40 0
+setClipPath intpath IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+# path & x
+save
+setClipPath intpath ReplaceClip
+translate 40 0
+setClipRect 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath intpath ReplaceClip
+translate 40 0
+setClipRectF 0 10 60 30 IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath intpath ReplaceClip
+translate 40 0
+setClipRegion intregion IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
+
+save
+setClipPath intpath ReplaceClip
+translate 40 0
+setClipPath intpath IntersectClip
+translate -40 0
+repeat_block paintstuff
+restore
+translate 100 0
diff --git a/tests/baseline/painting/scripts/conical_gradients.qps b/tests/baseline/painting/scripts/conical_gradients.qps
new file mode 100644
index 0000000000..d6eb860f3f
--- /dev/null
+++ b/tests/baseline/painting/scripts/conical_gradients.qps
@@ -0,0 +1,85 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path 300 0 80 80
+path_addEllipse path 340 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setConical 40 40 50
+drawRect 0 0 100 100
+
+gradient_setConical 140 40 230
+drawEllipse 100 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setConical 240 40 50
+drawPolygon [200 0 290 0 250 99]
+
+gradient_setConical 340 40 230
+drawPath path
+
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 410 50 "No XForm"
+drawText 410 200 "scale 1x2"
+drawText 410 300 "brush transform"
+drawText 10 450 "50 deg"
+drawText 110 450 "230 deg"
+drawText 210 450 "50 deg w/alpha "
+drawText 310 450 "230 deg w/alpha"
+
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+ setClipRect 0 0 100 100
+ drawEllipse 35 35 11 11
+ save
+ translate 40 40
+ rotate -50
+ drawLine -100 0 100 0
+ restore
+ translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/conical_gradients_perspectives.qps b/tests/baseline/painting/scripts/conical_gradients_perspectives.qps
new file mode 100644
index 0000000000..a9c14f1ce7
--- /dev/null
+++ b/tests/baseline/painting/scripts/conical_gradients_perspectives.qps
@@ -0,0 +1,64 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 0.9 cyan
+gradient_appendStop 1 red
+
+gradient_setSpread PadSpread
+gradient_setConical 140 140 100
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/cosmetic.qps b/tests/baseline/painting/scripts/cosmetic.qps
new file mode 100644
index 0000000000..3c730cf26f
--- /dev/null
+++ b/tests/baseline/painting/scripts/cosmetic.qps
@@ -0,0 +1,55 @@
+drawRect 0 0 800 800
+
+setRenderHint Antialiasing true
+image_load dome_argb32.png img
+
+save
+setBrush springgreen SolidPattern
+
+begin_block primitives
+
+setPen black 2 DashLine
+pen_setCosmetic true
+drawLine 10 60 60 10
+drawRect 80 10.0 30 50
+drawText 130 50 "Foo"
+drawImage img 160 10 50 50
+
+pen_setCosmetic false
+drawLine 10 160 60 110
+drawRect 80 110.0 30 50
+drawText 130 150 "Foo"
+drawImage img 160 110 50 50
+
+setPen NoPen
+drawLine 10 260 60 210
+drawRect 80 210.0 30 50
+drawText 130 250 "Foo"
+drawImage img 160 210 50 50
+
+end_block primitives
+
+
+translate 250 0
+rotate 10
+scale 2.5 1
+repeat_block primitives
+
+resetMatrix
+# Force non-simple pen in Pdf
+setOpacity 0.5
+translate 0 400
+repeat_block primitives
+
+translate 250 0
+rotate 10
+scale 2.5 1
+repeat_block primitives
+
+restore
+setPen blue 4 DotLine
+setBrush olive SolidPattern
+pen_setCosmetic true
+translate 50 720
+scale 2 2
+drawRect 0 0 30 30
diff --git a/tests/baseline/painting/scripts/dashes.qps b/tests/baseline/painting/scripts/dashes.qps
new file mode 100644
index 0000000000..185443a292
--- /dev/null
+++ b/tests/baseline/painting/scripts/dashes.qps
@@ -0,0 +1,268 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 20 20
+
+begin_block draw
+save
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+
+ translate 100 0
+ save
+ setPen black 1 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+ save
+ setPen black 1 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+restore
+end_block
+
+translate 0 400
+setRenderHint Antialiasing
+repeat_block draw
+
+translate 0 -20
+drawText 30 0 "Solid"
+
+translate 100 0
+drawText 20 0 "DotLine"
+
+translate 100 0
+drawText 10 0 "DashLine"
+
+translate 100 0
+drawText 0 0 "DashDotLine"
+
+translate 100 0
+drawText 0 0 "DashDotDotLine"
+
+translate 100 0
+drawText 0 0 "CustomDashLine"
+
+resetMatrix
+
+translate 620 40
+
+begin_block width_and_caps_texts
+ drawText 0 0 "Width=1, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=1, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=1, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=2, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=2, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=2, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=6, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=6, SqareCap"
+ translate 0 40
+ drawText 0 0 "Width=6, RoundCap"
+end_block
+
+translate 0 80
+repeat_block width_and_caps_texts \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/degeneratebeziers.qps b/tests/baseline/painting/scripts/degeneratebeziers.qps
new file mode 100644
index 0000000000..948968b0cd
--- /dev/null
+++ b/tests/baseline/painting/scripts/degeneratebeziers.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_moveTo degenerate 3427.0918499999997948 3872.1318999999998596
+path_cubicTo degenerate 3427.0918499999997948 3872.1318999999994048 4729.4590867905308187 5176.8613451144155988 5389.9325499999995372 5837.8072499999998399
+
+scale 0.05 0.05
+translate -2500 -3000
+setPen black 800
+drawPath degenerate
+
+resetMatrix
+path_moveTo revbez 0 20
+path_cubicTo revbez 0 0 120 0 120 -20
+
+path_moveTo revbez 0 80
+path_cubicTo revbez 0 100 120 100 120 120
+
+translate 50 250
+
+setPen blue 40 solidline flatcap
+drawPath revbez
+setPen red 0
+drawPath revbez
+
+translate 200 0
+setPen blue 40 solidline squarecap
+drawPath revbez
+setPen red 0
+drawPath revbez
+
+translate 200 0
+setPen blue 40 solidline roundcap
+drawPath revbez
+setPen red 0
+drawPath revbez
+
+resetMatrix
+path_lineTo tightJoin 60 10
+path_cubicTo tightJoin 50 0 100 0 100 50
+
+translate 50 500
+
+setPen green 40 solidline roundcap roundjoin
+drawPath tightJoin
+setPen red 0
+drawPath tightJoin
diff --git a/tests/baseline/painting/scripts/deviceclipping.qps b/tests/baseline/painting/scripts/deviceclipping.qps
new file mode 100644
index 0000000000..8608a50994
--- /dev/null
+++ b/tests/baseline/painting/scripts/deviceclipping.qps
@@ -0,0 +1,48 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush 0xff7f7f
+setPen 0x7f0000
+
+path_moveTo path -1000000 10000
+path_cubicTo path 100 100 100 150 150 400
+path_closeSubpath path
+
+begin_block drawing
+
+ drawPath ellipse
+
+ drawLine -1000000 200 200 200
+ drawLine 200 -1000000 200 200
+ drawLine 200 200 1000000 200
+ drawLine 200 200 200 1000000
+ drawLine -1000000 -1000000 200 200
+
+ drawPolygon [-1000000 100 100 -1000000 100 100]
+ drawRect 300 -500000 1000000 1000000
+
+ drawPath path
+
+end_block
+
+save
+translate 20 20
+setBrush #0x7f7f7fff
+setPen #0x7f00007f
+repeat_block drawing
+
+translate 20 20
+setRenderHint Antialiasing
+setBrush #0x7f7fff7f
+setPen #0x7f007f00
+repeat_block drawing
+restore
+
+setPen 0x00007f 2
+setRenderHint Antialiasing
+
+drawLine 0 -200 200 200
+
+setPen 0x007f00 10
+
+drawLine 0 -200 200 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/drawpoints.qps b/tests/baseline/painting/scripts/drawpoints.qps
new file mode 100644
index 0000000000..c02cd85737
--- /dev/null
+++ b/tests/baseline/painting/scripts/drawpoints.qps
@@ -0,0 +1,101 @@
+# Version: 1
+# CheckVsReference: 5%
+
+#setRenderHint Antialiasing
+
+setPen red 0 solidline
+begin_block points
+drawPoint 00 00
+drawPoint 10 00
+drawPoint 20 00
+drawPoint 30 00
+drawPoint 40 00
+drawPoint 50 00
+drawPoint 00 10
+drawPoint 10 10
+drawPoint 20 10
+drawPoint 30 10
+drawPoint 40 10
+drawPoint 50 10
+drawPoint 00 20
+drawPoint 10 20
+drawPoint 20 20
+drawPoint 30 20
+drawPoint 40 20
+drawPoint 50 20
+drawPoint 00 30
+drawPoint 10 30
+drawPoint 20 30
+drawPoint 30 30
+drawPoint 40 30
+drawPoint 50 30
+drawPoint 00 40
+drawPoint 10 40
+drawPoint 20 40
+drawPoint 30 40
+drawPoint 40 40
+drawPoint 50 40
+drawPoint 00 50
+drawPoint 10 50
+drawPoint 20 50
+drawPoint 30 50
+drawPoint 40 50
+drawPoint 50 50
+end_block points
+
+translate 100 0
+setPen blue 1 solidline
+repeat_block points
+
+translate 100 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 100
+scale 3 3
+setPen red 0 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 300
+scale 3 3
+setPen red 0 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline flatcap
+repeat_block points
+
+resetMatrix
+translate 10 500
+setPen black 1 solidline flatcap
+drawPoint 0 0
+setPen black 2 solidline flatcap
+drawPoint 3 0
+setPen black 3 solidline flatcap
+drawPoint 8 0
+setPen black 4 solidline flatcap
+drawPoint 15 0
+setPen black 5 solidline flatcap
+drawPoint 24 0
+setPen black 6 solidline flatcap
+drawPoint 35 0
+setPen black 7 solidline flatcap
+drawPoint 48 0
+setPen black 8 solidline flatcap
+drawPoint 63 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/ellipses.qps b/tests/baseline/painting/scripts/ellipses.qps
new file mode 100644
index 0000000000..e2cffd7f27
--- /dev/null
+++ b/tests/baseline/painting/scripts/ellipses.qps
@@ -0,0 +1,86 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+surface_begin 0 0 600 600
+translate 0 50
+
+setPen nopen
+setBrush 0x7f000000
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 220 200
+
+drawEllipse 10 10 80 80
+drawEllipse 50 50 120 90
+
+translate 100 0
+brushTranslate 40 20
+brushScale 0.25 0.25
+
+setPen black
+
+drawEllipse 10 10 80 80
+setOpacity 0.5
+setCompositionMode SourceIn
+drawEllipse 50 50 120 90
+setOpacity 1.0
+setRenderHint Antialiasing
+setCompositionMode Xor
+brushTranslate 70 0
+translate 100 0
+drawEllipse 10 10 80 80
+
+setPen nopen
+drawEllipse 50 50 120 90
+
+setOpacity 0.7
+setBrush red
+translate 100 0
+setCompositionMode SourceOver
+
+drawEllipse 10 10 80 80
+
+setOpacity 0.6
+setPen black 5.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 120 100
+drawEllipse 50 50 120 90
+
+
+translate 100 0
+
+setOpacity 1.0
+drawEllipse 10 10 80 80
+
+setCompositionMode SourceIn
+setOpacity 0.7
+setPen black 3.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 50 50 80 90
+drawEllipse 50 50 120 90
+
+surface_end
+
+drawText 200 220 "Testing Ellipse drawing with varios combinations"
+drawText 200 240 "of features such as brushes, pens and composition modes" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/fillrect.qps b/tests/baseline/painting/scripts/fillrect.qps
new file mode 100644
index 0000000000..103ef2646a
--- /dev/null
+++ b/tests/baseline/painting/scripts/fillrect.qps
@@ -0,0 +1,121 @@
+setRenderHint Antialiasing false
+
+# offscreen
+translate 0 -200
+
+begin_block rects
+# int API
+fillRect 10 10 20 20 green
+fillRect 40 10 20 20
+drawRect 70 10 20 20
+
+# float API, int values
+fillRectF 10.0 40.0 20.0 20.0 green
+fillRectF 40.0 40.0 20.0 20.0
+drawRect 70.0 40.0 20.0 20.0
+
+# float API, float values
+fillRectF 10.0 70.0 20.5 20.5 green
+fillRectF 40.0 70.0 20.5 20.5
+drawRect 70.0 70.0 20.5 20.5
+
+# alignment, int api, color
+fillRect 10 100 10 10 green
+fillRect 20 100 10 10 green
+fillRect 10 110 10 10 green
+fillRect 20 110 10 10 green
+
+# alignment, int api, brush
+fillRect 40 100 10 10
+fillRect 50 100 10 10
+fillRect 40 110 10 10
+fillRect 50 110 10 10
+
+# alignment comparison
+drawRect 70 100 10 10
+drawRect 80 100 10 10
+drawRect 70 110 10 10
+drawRect 80 110 10 10
+
+# alignment, float api, color
+fillRectF 10.0 130.0 10.0 10.0 green
+fillRectF 20.0 130.0 10.0 10.0 green
+fillRectF 10.0 140.0 10.0 10.0 green
+fillRectF 20.0 140.0 10.0 10.0 green
+
+# alignment, float api, brush
+fillRectF 40.0 130.0 10.0 10.0
+fillRectF 50.0 130.0 10.0 10.0
+fillRectF 40.0 140.0 10.0 10.0
+fillRectF 50.0 140.0 10.0 10.0
+
+# alignment comparison
+drawRect 70.0 130.0 10.0 10.0
+drawRect 80.0 130.0 10.0 10.0
+drawRect 70.0 140.0 10.0 10.0
+drawRect 80.0 140.0 10.0 10.0
+
+end_block
+
+begin_block row
+
+repeat_block rects
+
+save
+translate 100.2 0.2
+repeat_block rects
+restore
+
+save
+translate 200.5 0.5
+repeat_block rects
+restore
+
+save
+translate 300.7 0.7
+repeat_block rects
+restore
+
+end_block
+
+# end of block defs
+
+resetMatrix
+
+setPen NoPen
+setBrush green
+repeat_block row
+
+save
+translate 500 50
+scale 0.42 0.42
+repeat_block row
+restore
+
+save
+translate 0 160
+scale 1.8 0.8
+repeat_block row
+restore
+
+save
+translate 650 320
+rotate 80
+repeat_block row
+restore
+
+save
+setBrush green Dense2Pattern
+translate 0 400
+repeat_block row
+restore
+
+save
+gradient_clearStops
+gradient_appendStop 0 green
+gradient_appendStop 1 blue
+gradient_setCoordinateMode ObjectBoundingMode
+gradient_setLinear 0.0 0.0 1.0 1.0
+translate 0 600
+repeat_block row
+restore
diff --git a/tests/baseline/painting/scripts/fillrect_aa.qps b/tests/baseline/painting/scripts/fillrect_aa.qps
new file mode 100644
index 0000000000..3232899661
--- /dev/null
+++ b/tests/baseline/painting/scripts/fillrect_aa.qps
@@ -0,0 +1,121 @@
+setRenderHint Antialiasing true
+
+# offscreen
+translate 0 -200
+
+begin_block rects
+# int API
+fillRect 10 10 20 20 green
+fillRect 40 10 20 20
+drawRect 70 10 20 20
+
+# float API, int values
+fillRectF 10.0 40.0 20.0 20.0 green
+fillRectF 40.0 40.0 20.0 20.0
+drawRect 70.0 40.0 20.0 20.0
+
+# float API, float values
+fillRectF 10.0 70.0 20.5 20.5 green
+fillRectF 40.0 70.0 20.5 20.5
+drawRect 70.0 70.0 20.5 20.5
+
+# alignment, int api, color
+fillRect 10 100 10 10 green
+fillRect 20 100 10 10 green
+fillRect 10 110 10 10 green
+fillRect 20 110 10 10 green
+
+# alignment, int api, brush
+fillRect 40 100 10 10
+fillRect 50 100 10 10
+fillRect 40 110 10 10
+fillRect 50 110 10 10
+
+# alignment comparison
+drawRect 70 100 10 10
+drawRect 80 100 10 10
+drawRect 70 110 10 10
+drawRect 80 110 10 10
+
+# alignment, float api, color
+fillRectF 10.0 130.0 10.0 10.0 green
+fillRectF 20.0 130.0 10.0 10.0 green
+fillRectF 10.0 140.0 10.0 10.0 green
+fillRectF 20.0 140.0 10.0 10.0 green
+
+# alignment, float api, brush
+fillRectF 40.0 130.0 10.0 10.0
+fillRectF 50.0 130.0 10.0 10.0
+fillRectF 40.0 140.0 10.0 10.0
+fillRectF 50.0 140.0 10.0 10.0
+
+# alignment comparison
+drawRect 70.0 130.0 10.0 10.0
+drawRect 80.0 130.0 10.0 10.0
+drawRect 70.0 140.0 10.0 10.0
+drawRect 80.0 140.0 10.0 10.0
+
+end_block
+
+begin_block row
+
+repeat_block rects
+
+save
+translate 100.2 0.2
+repeat_block rects
+restore
+
+save
+translate 200.5 0.5
+repeat_block rects
+restore
+
+save
+translate 300.7 0.7
+repeat_block rects
+restore
+
+end_block
+
+# end of block defs
+
+resetMatrix
+
+setPen NoPen
+setBrush green
+repeat_block row
+
+save
+translate 500 50
+scale 0.42 0.42
+repeat_block row
+restore
+
+save
+translate 0 160
+scale 1.8 0.8
+repeat_block row
+restore
+
+save
+translate 650 320
+rotate 80
+repeat_block row
+restore
+
+save
+setBrush green Dense2Pattern
+translate 0 400
+repeat_block row
+restore
+
+save
+gradient_clearStops
+gradient_appendStop 0 green
+gradient_appendStop 1 blue
+gradient_setCoordinateMode ObjectBoundingMode
+gradient_setLinear 0.0 0.0 1.0 1.0
+translate 0 600
+repeat_block row
+restore
diff --git a/tests/baseline/painting/scripts/filltest.qps b/tests/baseline/painting/scripts/filltest.qps
new file mode 100644
index 0000000000..112ffc85be
--- /dev/null
+++ b/tests/baseline/painting/scripts/filltest.qps
@@ -0,0 +1,413 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen nopen
+setBrush red
+translate 0 4
+begin_block polys
+drawPolygon [0 0 2 -2 4 0]
+drawPolygon [0 2 2 4 4 2]
+end_block polys
+translate 6 .5
+repeat_block polys
+translate 6.5 0
+repeat_block polys
+translate 6 .5
+repeat_block polys
+
+resetMatrix
+
+translate 0 12
+setPen black
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+setPen nopen
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+drawPolygon [0 0 5 0 5 5 0 5]
+
+setBrush black
+path_addRect stroke -.5 -.5 6 6
+path_addRect stroke .5 .5 4 4
+drawPath stroke
+
+resetMatrix
+
+translate 0 65
+
+setPen red
+drawText 0 0 "path"
+drawText 40 0 "rect"
+drawText 80 0 "img"
+drawText 120 0 "pix"
+drawText 160 0 "brush"
+setPen nopen
+
+translate 0 5
+
+image_load border.png img
+pixmap_load border.png pix
+
+path_addRect rect 0 0 10 10
+begin_block rects
+drawPath rect
+drawRect 40 0 10 10
+drawImage img 80 0
+drawPixmap pix 120 0
+setBrush border.png
+drawRect 160 0 10 10
+setBrush black
+end_block rects
+
+setPen red
+drawText 180 10 "0.0"
+setPen nopen
+
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.1"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.2"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.3"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.4"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.5"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.6"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.7"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.8"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.9"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 400
+
+setPen red
+drawText 0 10 "path"
+drawText 0 30 "rect"
+drawText 0 50 "img"
+drawText 0 70 "pix"
+drawText 0 90 "brush"
+drawText 0 110 "stroke"
+drawText 0 130 "scale"
+drawText 0 170 "rotate"
+setPen nopen
+
+translate 50 0
+
+begin_block rects2
+drawPath rect
+drawRect 0 20 10 10
+drawImage img 0 40
+drawPixmap pix 0 60
+save
+setBrush border.png
+drawRect 0 80 10 10
+translate 0 100
+setBrush red
+setPen black
+drawRect 0 0 10 10
+setBrush border.png
+setPen nopen
+translate 0 20
+scale 2 2
+drawRect 0 0 10 10
+translate 10 20
+rotate 90
+drawRect 0 0 10 10
+restore
+end_block rects2
+
+setPen red
+drawText -5 -10 "0.0"
+setPen nopen
+
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.1"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.2"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.3"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.4"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.5"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.6"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.7"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.8"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "0.9"
+setPen nopen
+translate 40 0.1
+repeat_block rects2
+setPen red
+drawText -5 -10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 620
+
+setPen red
+drawText 0 10 "path"
+setPen nopen
+
+path_addRect rect2 -5 -5 10 10
+
+translate 55 5
+drawPath rect2
+
+translate 20 0
+rotate 10
+drawPath rect2
+rotate -10
+translate 20 0
+rotate 20
+drawPath rect2
+rotate -20
+translate 20 0
+rotate 30
+drawPath rect2
+rotate -30
+translate 20 0
+rotate 40
+drawPath rect2
+rotate -40
+translate 20 0
+rotate 50
+drawPath rect2
+rotate -50
+translate 20 0
+rotate 60
+drawPath rect2
+rotate -60
+translate 20 0
+rotate 70
+drawPath rect2
+rotate -70
+translate 20 0
+rotate 80
+drawPath rect2
+rotate -80
+translate 20 0
+rotate 90
+drawPath rect2
+rotate -90
+
+resetMatrix
+
+translate 0 600
+
+setPen red
+drawText 0 10 "rect"
+setPen nopen
+
+translate 55 5
+drawRect -5 -5 10 10
+
+translate 20 0
+rotate 10
+drawRect -5 -5 10 10
+rotate -10
+translate 20 0
+rotate 20
+drawRect -5 -5 10 10
+rotate -20
+translate 20 0
+rotate 30
+drawRect -5 -5 10 10
+rotate -30
+translate 20 0
+rotate 40
+drawRect -5 -5 10 10
+rotate -40
+translate 20 0
+rotate 50
+drawRect -5 -5 10 10
+rotate -50
+translate 20 0
+rotate 60
+drawRect -5 -5 10 10
+rotate -60
+translate 20 0
+rotate 70
+drawRect -5 -5 10 10
+rotate -70
+translate 20 0
+rotate 80
+drawRect -5 -5 10 10
+rotate -80
+translate 20 0
+rotate 90
+drawRect -5 -5 10 10
+rotate -90
+
+resetMatrix
+path_addRect vertical 0.1 0.1 0.2 10
+
+translate 0 320
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+
+resetMatrix
+path_addRect horizontal 0.1 0.1 10 0.2
+
+translate 0 340
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+
+setOpacity 0.8
+resetMatrix
+
+translate 0.1 24.7
+translate 400 0
+#rotate 88.8
+rotate 89.9
+setBrush red
+drawPolygon [0 0 300 0 0 173]
+setBrush green
+drawPolygon [0 173 300 0 300 173]
+
+resetMatrix
+
+translate 410 24
+path_lineTo left 0 273
+path_lineTo left 300 273
+path_cubicTo left 50 273 250 0 0 0
+
+path_cubicTo right 250 0 50 273 300 273
+path_lineTo right 300 0
+
+translate 310 0
+rotate 90
+setBrush red
+drawPath left
+setBrush green
+drawPath right
+
+resetMatrix
+translate 0.1 680.1
+setPen red
+setOpacity 1
+drawText 115 -20 "0.1"
+drawText 0 0 "pixmap w/ opacity"
+setOpacity 0.6
+drawPixmap pix 120 -10
+translate 0 20
+setOpacity 1
+drawText 0 0 "image w/ opacity"
+setOpacity 0.6
+drawImage img 120 -10
+
+resetMatrix
+path_lineTo fillpath 0 50
+path_lineTo fillpath 50 50
+path_moveTo fillpath 70 50
+path_lineTo fillpath 70 100
+path_lineTo fillpath 40 100
+translate 500 400
+drawPath fillpath
+
+resetMatrix
+path_moveTo vectorarne 50 10
+path_lineTo vectorarne 50 50
+path_lineTo vectorarne 100 50
+path_addEllipse vectorarne 350 20 230 230
+path_moveTo vectorarne 500 500
+path_cubicTo vectorarne 20 20 250 30 50 150
+translate 500 550
+scale 0.4 0.4
+setRenderHint antialiasing
+drawPath vectorarne
+
+resetMatrix
+translate 200 730
+setRenderHint antialiasing off
+setOpacity 1
+setPen red
+drawText 0 0 "outline/fill consistency"
+setPen red
+setBrush green
+translate 80 -30
+drawPolygon [13.6965 -99.1837 -71.4767 13.823 32.4596 -33.1847]
diff --git a/tests/baseline/painting/scripts/glyphruns.qps b/tests/baseline/painting/scripts/glyphruns.qps
new file mode 100644
index 0000000000..2b70c72610
--- /dev/null
+++ b/tests/baseline/painting/scripts/glyphruns.qps
@@ -0,0 +1,175 @@
+drawGlyphRun -5 5 "Text that is drawn outside the bounds..."
+
+translate 20 20
+begin_block text_drawing
+save
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 20 "sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 40 "sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 60 "sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 80 "sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen #7fff0000
+
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 20 "alpha sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 40 "alpha sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 60 "alpha sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 80 "alpha sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen black
+ save
+ scale 0.9 0.9
+
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 200 200
+ setPen black
+ save
+ scale -1 -1
+
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 20 "flipped sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 40 "flipped sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 60 "flipped sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 80 "flipped sansserif 10pt, bold italic"
+ restore
+
+ translate -200 20
+ setPen black
+ save
+ translate 200 90
+ rotate 185
+
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 20 "rotated sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 40 "rotated sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 60 "rotated sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 80 "rotated sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ gradient_appendStop 0 red
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 200 0
+ setPen brush
+
+ setFont "sansserif" 10 normal
+ drawGlyphRun 0 0 "gradient sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawGlyphRun 0 20 "gradient sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawGlyphRun 0 40 "gradient sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawGlyphRun 0 60 "gradient sansserif 10pt, bold italic"
+restore
+end_block
+
+translate 250 0
+drawGlyphRun 25 640 "clipped to rectangle"
+save
+ setPen #3f000000
+ setBrush nobrush
+ drawRect 20 0 100 620
+ setClipRect 20 0 100 620
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+drawGlyphRun 25 640 "clipped to path"
+save
+ path_moveTo clip 20 0
+ path_cubicTo clip 0 200 40 400 20 400
+ path_lineTo clip 30 620
+ path_lineTo clip 30 0
+ path_lineTo clip 40 0
+ path_lineTo clip 40 620
+ path_lineTo clip 120 620
+ path_lineTo clip 120 0
+ path_lineTo clip 20 0
+ setPen #3f000000
+ setBrush nobrush
+ drawPath clip
+ setClipPath clip
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+save
+ setPen black
+ setFont "sansserif" 16 normal
+ drawGlyphRun 0 40 "e😃m😇o😍j😜i😸!"
+restore
+
+translate 0 55
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline
+ drawGlyphRun 0 20 "Underlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal strikeout
+ drawGlyphRun 0 20 "Struck out text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal normal overline
+ drawGlyphRun 0 20 "Overlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline strikeout overline
+ drawGlyphRun 0 20 "All the effects text drawing"
+restore
diff --git a/tests/baseline/painting/scripts/gradients.qps b/tests/baseline/painting/scripts/gradients.qps
new file mode 100644
index 0000000000..eb3cda9cad
--- /dev/null
+++ b/tests/baseline/painting/scripts/gradients.qps
@@ -0,0 +1,44 @@
+# Version: 1
+# CheckVsReference: 5%
+
+drawText 75 20 "Linear"
+drawText 176 20 "Radial"
+drawText 277 20 "Conical"
+translate 0 30
+drawText 0 50 "AA off"
+drawText 0 151 "AA on"
+
+setPen nopen
+
+gradient_clearStops
+gradient_appendStop 0 0x00000000
+gradient_appendStop 0.001 red
+gradient_appendStop 0.2 blue
+gradient_appendStop 0.4 yellow
+gradient_appendStop 0.6 cyan
+gradient_appendStop 0.8 green
+gradient_appendStop 0.999 red
+gradient_appendStop 1 0x00000000
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+
+begin_block row
+save
+gradient_setLinear 0.1 0.0 0.9 0.0
+drawRect 50 0 100 100
+
+gradient_setRadial 0.5 0.5 0.5 0.5 0.5
+translate 101 0
+drawRect 50 0 100 100
+
+gradient_setConical 0.5 0.5 45
+translate 101 0
+drawRect 50 0 100 100
+restore
+end_block row
+
+setRenderHint Antialiasing
+
+translate 0 101
+repeat_block row \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/gradientxform_device.qps b/tests/baseline/painting/scripts/gradientxform_device.qps
new file mode 100644
index 0000000000..cd8b55d5b6
--- /dev/null
+++ b/tests/baseline/painting/scripts/gradientxform_device.qps
@@ -0,0 +1,67 @@
+# Version: 1
+# CheckVsReference: 5%
+
+gradient_clearStops
+gradient_appendStop 0 black
+gradient_appendStop 0.4 yellow
+gradient_appendStop 1 gray
+
+gradient_setSpread PadSpread
+
+gradient_setCoordinateMode StretchToDeviceMode
+
+# first run is dummy, make it offscreen
+save
+translate -500 -500
+
+begin_block row
+save
+
+setPen nopen
+drawRect 50 0 100 100
+
+setPen brush 30
+setBrush lightblue
+drawRect 175 15 70 70
+
+setFont "times" 110 1000
+drawText 270 100 "X"
+
+restore
+end_block row
+
+restore
+
+drawText 160 20 "PLAIN"
+drawText 560 20 "BRUSH XFORM"
+translate 0 20
+
+begin_block block
+save
+
+drawText 75 20 "Brush Fill"
+drawText 176 20 "Pen Stroke"
+drawText 277 20 "Text Stroke"
+translate 0 30
+drawText 0 50 "Linear"
+drawText 0 160 "Radial"
+drawText 0 270 "Conical"
+
+gradient_setLinear 0.0 0.0 0.4 0.0
+repeat_block row
+
+translate 0 110
+gradient_setRadial 0.04 0.08 0.3 0.3 0.05
+repeat_block row
+
+translate 0 110
+gradient_setConical 0.25 0.1 45
+repeat_block row
+restore
+end_block block
+
+translate 400 0
+brushRotate 30.0
+brushScale 1.5 .5
+brushTranslate 0 -80
+repeat_block block
diff --git a/tests/baseline/painting/scripts/gradientxform_logical.qps b/tests/baseline/painting/scripts/gradientxform_logical.qps
new file mode 100644
index 0000000000..1bba63a929
--- /dev/null
+++ b/tests/baseline/painting/scripts/gradientxform_logical.qps
@@ -0,0 +1,67 @@
+# Version: 1
+# CheckVsReference: 5%
+
+gradient_clearStops
+gradient_appendStop 0 black
+gradient_appendStop 0.4 yellow
+gradient_appendStop 1 gray
+
+gradient_setSpread PadSpread
+
+gradient_setCoordinateMode LogicalMode
+
+# first run is dummy, make it offscreen
+save
+translate -500 -500
+
+begin_block row
+save
+
+setPen nopen
+drawRect 50 0 100 100
+
+setPen brush 30
+setBrush lightblue
+drawRect 175 15 70 70
+
+setFont "times" 110 1000
+drawText 270 100 "X"
+
+restore
+end_block row
+
+restore
+
+drawText 160 20 "PLAIN"
+drawText 560 20 "BRUSH XFORM"
+translate 0 20
+
+begin_block block
+save
+
+drawText 75 20 "Brush Fill"
+drawText 176 20 "Pen Stroke"
+drawText 277 20 "Text Stroke"
+translate 0 30
+drawText 0 50 "Linear"
+drawText 0 160 "Radial"
+drawText 0 270 "Conical"
+
+gradient_setLinear 0 0 400 0
+repeat_block row
+
+translate 0 110
+gradient_setRadial 200 50 140 70 20
+repeat_block row
+
+translate 0 110
+gradient_setConical 220 60 45
+repeat_block row
+restore
+end_block block
+
+translate 400 0
+brushRotate 30.0
+brushScale 1.5 .5
+brushTranslate 0 -80
+repeat_block block
diff --git a/tests/baseline/painting/scripts/gradientxform_object.qps b/tests/baseline/painting/scripts/gradientxform_object.qps
new file mode 100644
index 0000000000..e34da24d46
--- /dev/null
+++ b/tests/baseline/painting/scripts/gradientxform_object.qps
@@ -0,0 +1,83 @@
+# Version: 1
+# CheckVsReference: 5%
+
+gradient_clearStops
+gradient_appendStop 0 black
+gradient_appendStop 0.4 yellow
+gradient_appendStop 1 gray
+
+gradient_setSpread PadSpread
+
+gradient_setCoordinateMode ObjectBoundingMode
+
+# first run is dummy, make it offscreen
+save
+translate -500 -500
+
+begin_block row
+save
+
+setPen nopen
+drawRect 50 0 100 100
+
+setPen brush 30
+setBrush lightblue
+translate 110 0
+drawRect 65 15 70 70
+
+translate 110 0
+setFont "times" 110 1000
+drawText 50 100 "X"
+
+restore
+end_block row
+
+restore
+
+drawText 160 20 "PLAIN"
+drawText 560 20 "BRUSH XFORM"
+translate 0 20
+
+begin_block block
+save
+
+drawText 75 20 "Brush Fill"
+drawText 176 20 "Pen Stroke"
+drawText 277 20 "Text Stroke"
+translate 0 30
+drawText 0 50 "Linear"
+drawText 0 160 "Radial"
+drawText 0 270 "Conical"
+
+gradient_setLinear 0.1 0.0 0.5 0.0
+repeat_block row
+
+translate 0 110
+gradient_setRadial 0.3 0.2 0.5 0.4 0.5
+repeat_block row
+
+translate 0 110
+gradient_setConical 0.5 0.7 45
+repeat_block row
+restore
+end_block block
+
+save
+translate 400 0
+brushRotate 30.0
+brushScale 1.5 .5
+repeat_block block
+restore
+
+drawText 80 400 "BRUSH XFORM, OBJECT BOUNDING MODE"
+drawText 500 400 "BRUSH XFORM, OBJECT MODE"
+
+translate 0 400
+brushTranslate 0.5 0.5
+brushRotate 180.0
+brushTranslate -0.5 -0.5
+repeat_block block
+
+translate 400 0
+gradient_setCoordinateMode ObjectMode
+repeat_block block
diff --git a/tests/baseline/painting/scripts/hinting.qps b/tests/baseline/painting/scripts/hinting.qps
new file mode 100644
index 0000000000..7ce21b287a
--- /dev/null
+++ b/tests/baseline/painting/scripts/hinting.qps
@@ -0,0 +1,26 @@
+translate 10 50
+setFont "sansserif" 10
+drawText 0 0 "Default hinting:"
+setFont "times" 12 normal normal default
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "No hinting:"
+setFont "times" 12 normal normal none
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "Vertical hinting:"
+setFont "times" 12 normal normal vertical
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "Full hinting:"
+setFont "times" 12 normal normal full
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+
+# Note: there is also the textlayout_draw command which might be interesting here.
diff --git a/tests/baseline/painting/scripts/image_dpr.qps b/tests/baseline/painting/scripts/image_dpr.qps
new file mode 100644
index 0000000000..7d3ca3099c
--- /dev/null
+++ b/tests/baseline/painting/scripts/image_dpr.qps
@@ -0,0 +1,43 @@
+
+setRenderHint Antialiasing true
+setRenderHint SmoothPixmapTransform true
+
+image_load sign.png img1
+pixmap_load sign.png pix1
+
+begin_block drawIt
+save
+
+drawImage img1 20 20 -1 -1
+drawRect 17.5 17.5 85 85
+
+setBrush img1
+setPen NoPen
+drawRect 20 120 120 120
+
+brushRotate 45
+drawRect 20 260 120 120
+
+setBrush NoBrush
+drawTiledPixmap pix1 20 400 120 120
+
+restore
+end_block
+
+save
+translate 150 0
+rotate -5
+repeat_block drawIt
+restore
+
+image_setDevicePixelRatio img1 2.0
+pixmap_setDevicePixelRatio pix1 2.0
+translate 400 0
+repeat_block drawIt
+
+save
+translate 150 0
+rotate -5
+repeat_block drawIt
+restore
+
diff --git a/tests/baseline/painting/scripts/image_formats.qps b/tests/baseline/painting/scripts/image_formats.qps
new file mode 100644
index 0000000000..d817d04bf8
--- /dev/null
+++ b/tests/baseline/painting/scripts/image_formats.qps
@@ -0,0 +1,81 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+image_load dome_argb32.png the_pixmap
+image_convertToFormat the_pixmap the_pixmap ARGB32_Premultiplied
+
+begin_block draw_stuff
+ save
+ image_convertToFormat the_pixmap converted ARGB32_Premultiplied
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted ARGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted RGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Indexed8
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted MonoLSB
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Mono
+ drawImage converted 0 0
+ translate 0 110
+ restore
+end_block
+
+
+image_load dome_argb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_rgb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_mono.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_mono_palette.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed_mask.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+# helpful texts
+resetMatrix
+setPen black
+
+drawText 10 670 "ARGB32_PM"
+drawText 120 670 "ARGB32"
+drawText 230 670 "RGB32"
+drawText 340 670 "Indexed"
+drawText 450 670 "Mono"
+drawText 560 670 "Mono w/lut"
+drawText 670 670 "Indexed w/mask"
+
+drawText 770 50 "ARGB32_PM"
+drawText 770 160 "ARGB32"
+drawText 770 270 "RGB32"
+drawText 770 380 "Indexed"
+drawText 770 490 "MonoLSB"
+drawText 770 600 "Mono" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/images.qps b/tests/baseline/painting/scripts/images.qps
new file mode 100644
index 0000000000..3f892400e2
--- /dev/null
+++ b/tests/baseline/painting/scripts/images.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawImage the_image 0 0
+
+ # sub recting
+ translate 120 0
+ drawImage the_image 0 0 40 40 0 0 40 40
+ drawImage the_image 60 0 40 40 60 0 40 40
+ drawImage the_image 0 60 40 40 0 60 40 40
+ drawImage the_image 60 60 40 40 60 60 40 40
+ drawImage the_image 0 40 40 20 0 40 40 20
+ drawImage the_image 60 40 40 20 60 40 40 20
+ drawImage the_image 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+image_load dome_rgb32.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed_mask.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_mono.png the_image
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/images2.qps b/tests/baseline/painting/scripts/images2.qps
new file mode 100644
index 0000000000..5159abc928
--- /dev/null
+++ b/tests/baseline/painting/scripts/images2.qps
@@ -0,0 +1,145 @@
+# Version: 1
+# CheckVsReference: 5%
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+ # standard draw
+ drawImage the_image 0 0
+
+ # flip x
+ translate 220 0
+ scale -1 1
+ drawImage the_image 0 0
+ scale -1 1
+
+ # flip y
+ translate 20 100
+ scale 1 -1
+ drawImage the_image 0 0
+ scale 1 -1
+
+ # flip x and y
+ translate 220 0
+ scale -1 -1
+ drawImage the_image 0 0
+ scale -1 -1
+
+ # flip y and scale
+ translate 20 10
+ save
+ scale 1 -1.1
+ drawImage the_image 0 0
+ restore
+
+ # flip y and scale
+ translate 220 -110
+ save
+ scale -1.1 0.9
+ drawImage the_image 0 0
+ restore
+restore
+end_block
+
+setRenderHint Antialiasing
+
+resetMatrix
+translate 0 120
+repeat_block draw_stuff
+
+resetMatrix
+translate 720 60
+setPen black
+drawText 0 0 "aliased"
+translate 0 120
+drawText 0 0 "antialiased"
+resetMatrix
+translate 0 260
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "flip x"
+translate 120 0
+drawText 0 0 "flip y"
+translate 120 0
+drawText 0 0 "flip x and y"
+translate 120 0
+drawText 0 0 "flip y and scale"
+translate 120 0
+drawText 0 0 "flip x and scale"
+translate 120 0
+
+setRenderHint SmoothPixmapTransform
+
+resetMatrix
+translate 20 300
+drawImage border.png 0 0 100 100 1 1 8 8
+drawText 0 -5 "subrect color bleeding"
+translate 0 120
+drawImage border.png 0 0 100 100 0 0 10 10
+
+image_load sign.png the_image
+resetMatrix
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 80 80
+
+pixmap_load sign.png the_pixmap
+translate 220 0
+translate 0 -10
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 80 80
+
+
+resetMatrix
+translate 0 170
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 50 50
+
+resetMatrix
+translate 220 170
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 50 50
+
+resetMatrix
+drawText 10 620 "drawImage/Pixmap() with negative x/y and sx/sy"
+setPen red
+
+translate 20 640
+drawImage the_image -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
+
+translate 100 0
+drawPixmap the_pixmap -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
diff --git a/tests/baseline/painting/scripts/join_cap_styles.qps b/tests/baseline/painting/scripts/join_cap_styles.qps
new file mode 100644
index 0000000000..ed823f53f5
--- /dev/null
+++ b/tests/baseline/painting/scripts/join_cap_styles.qps
@@ -0,0 +1,63 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 20 20
+path_cubicTo p 100 20 100 180 180 100
+path_lineTo p 20 180
+path_lineTo p 180 20
+
+setPen black 20 solidline roundcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline squarecap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline flatcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap beveljoin
+drawPath p
+setPen red
+drawPath p \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/join_cap_styles_duplicate_control_points.qps b/tests/baseline/painting/scripts/join_cap_styles_duplicate_control_points.qps
new file mode 100644
index 0000000000..96405ceae7
--- /dev/null
+++ b/tests/baseline/painting/scripts/join_cap_styles_duplicate_control_points.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 600 650)
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 40 70
+path_lineTo p 20 70
+path_cubicTo p 20 70 40 20 80 80
+
+path_moveTo p 20 120
+path_cubicTo p 50 60 80 110 80 110
+path_lineTo p 60 110
+
+scale 2 2
+
+setPen black 10 solidline roundcap roundjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap miterjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap beveljoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate -200 100
+setPen black 10 solidline squarecap roundjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap miterjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap beveljoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate -200 100
+setPen black 10 solidline flatcap roundjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap miterjoin
+drawPath p
+setPen red 0
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap beveljoin
+drawPath p
+setPen red 0
+drawPath p \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/linear_gradients.qps b/tests/baseline/painting/scripts/linear_gradients.qps
new file mode 100644
index 0000000000..b1b8dd69e7
--- /dev/null
+++ b/tests/baseline/painting/scripts/linear_gradients.qps
@@ -0,0 +1,144 @@
+# Version: 1
+# CheckVsReference: 2% (0 0 600 750)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 70 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 170 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 270 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Vertical gradient tests
+resetMatrix
+setBrush noBrush
+translate 0 400
+
+begin_block vertical_gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 20 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 120 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 220 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 320 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 420 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 520 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 1.5
+repeat_block vertical_gradients
+
+resetMatrix
+translate 0 650
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block vertical_gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+# gradient line indicators
+drawLine 20 20 70 70
+drawLine 120 20 170 70
+drawLine 220 20 270 70
+drawLine 320 20 340 40
+drawLine 420 20 440 40
+drawLine 520 20 540 40
+
+drawLine 20 140 70 240
+drawLine 120 140 170 240
+drawLine 220 140 270 240
+drawLine 320 140 340 180
+drawLine 420 140 440 180
+drawLine 520 140 540 180
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 350 "brush transform"
+drawText 610 450 "vertical brush"
+drawText 610 570 "vertical brush scale 1x1.5"
+drawText 610 700 "vertical brush transform"
+
+drawText 10 780 "Pad"
+drawText 110 780 "Reflect"
+drawText 210 780 "Repeat"
+drawText 310 780 "Pad w/alpha"
+drawText 410 780 "Reflect w/alpha"
+drawText 510 780 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/linear_gradients_perspectives.qps b/tests/baseline/painting/scripts/linear_gradients_perspectives.qps
new file mode 100644
index 0000000000..3ea39fbe46
--- /dev/null
+++ b/tests/baseline/painting/scripts/linear_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 290 290
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/linear_resolving_gradients.qps b/tests/baseline/painting/scripts/linear_resolving_gradients.qps
new file mode 100644
index 0000000000..779760cb9a
--- /dev/null
+++ b/tests/baseline/painting/scripts/linear_resolving_gradients.qps
@@ -0,0 +1,66 @@
+# Version: 2
+# CheckVsReference: 2% (0 0 500 400)
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 0.2 0.2 0.8 0.4
+drawPolygon [300 0 400 0 350 100]
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.4 0.4
+drawPie 400 0 100 100 0 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 510 50 "No XForm"
+drawText 510 200 "scale 1x2"
+drawText 510 350 "brush transform"
+
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/lineconsistency.qps b/tests/baseline/painting/scripts/lineconsistency.qps
new file mode 100644
index 0000000000..0b40577659
--- /dev/null
+++ b/tests/baseline/painting/scripts/lineconsistency.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+begin_block draw
+setPen red
+drawPolygon [1.1 1 3.3 30.6 23.1 39.2 38.9 6.5]
+setPen black
+drawLine 1.1 1 3.3 30.6
+drawLine 3.3 30.6 23.1 39.2
+drawLine 23.1 39.2 38.9 6.5
+drawLine 38.9 6.5 1.1 1
+end_block draw
+drawText 0 60 "0.0 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.1 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.2 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.3 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.4 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.5 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.6 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.7 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.8 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.9 aligned"
+
+resetMatrix
+translate 100 0
+setPen black
+drawText 0 20 "Line and text, 0.0 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.1 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.2 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.3 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.4 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.5 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.6 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.7 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.8 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.9 aligned"
+drawLine 0 21 160 21 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/linedashes.qps b/tests/baseline/painting/scripts/linedashes.qps
new file mode 100644
index 0000000000..78c791e68b
--- /dev/null
+++ b/tests/baseline/painting/scripts/linedashes.qps
@@ -0,0 +1,132 @@
+# Version: 1
+
+translate 10 10
+
+setPen 0xffff0000 0 solidline squarecap
+translate 50 50
+begin_block draw_lines
+ save
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+end_block
+
+setPen 0xffff0000 0 dotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashline squarecap
+translate 100 0
+repeat_block draw_lines
+
+path_moveTo mypath 10 10
+path_lineTo mypath 87 10
+path_moveTo mypath 10 30
+path_lineTo mypath 87 30
+path_moveTo mypath 10 50
+path_lineTo mypath 87 50
+
+resetMatrix
+translate 0 150
+
+begin_block distinctLines
+
+setPen black 0 SolidLine SquareCap
+pen_setDashPattern [ 3 3 ]
+drawPath mypath
+
+translate 100 0
+setPen black 5 SolidLine SquareCap
+pen_setDashPattern [ 3 3 ]
+drawPath mypath
+
+translate 100 0
+setPen black 0 SolidLine RoundCap
+pen_setDashPattern [ 3 3 ]
+drawPath mypath
+
+translate 100 0
+setPen black 5 SolidLine RoundCap
+pen_setDashPattern [ 3 3 ]
+drawPath mypath
+
+end_block distinctLines
+
+resetMatrix
+translate 0 220
+setRenderHint Antialiasing true
+repeat_block distinctLines
diff --git a/tests/baseline/painting/scripts/linedashes2.qps b/tests/baseline/painting/scripts/linedashes2.qps
new file mode 100644
index 0000000000..b9a4cb9566
--- /dev/null
+++ b/tests/baseline/painting/scripts/linedashes2.qps
@@ -0,0 +1,196 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 800 800)
+
+translate -30 10
+
+setPen 0xffff0000 0 dashline squarecap
+pen_setDashPattern [10 5]
+
+save
+translate 100 100
+begin_block lines
+drawLine 100 100 200 100
+drawLine 100 100 200 200
+drawLine 100 100 100 200
+end_block
+
+setPen 0xffff0000 2 dashline squarecap
+translate 150 0
+repeat_block lines
+restore
+
+save
+save
+begin_block horizontal
+drawLine 0 0 50 0
+drawLine 3 10 53 10
+drawLine 6 20 56 20
+drawLine 9 30 59 30
+
+translate 0 50
+
+drawLine 0 0 50 5
+drawLine 3 10 53 15
+drawLine 6 20 56 25
+drawLine 9 30 59 35
+
+translate 0 50
+
+drawLine 0 0 50 -5
+drawLine 3 10 53 5
+drawLine 6 20 56 15
+drawLine 9 30 59 25
+end_block
+restore
+
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 800 0
+repeat_block horizontal
+restore
+
+translate 180 -40
+save
+begin_block vertical
+drawLine 0 0 0 50
+drawLine 10 3 10 53
+drawLine 20 6 20 56
+drawLine 30 9 30 59
+
+translate 50 0
+
+drawLine 0 0 5 50
+drawLine 10 3 15 53
+drawLine 20 6 25 56
+drawLine 30 9 35 59
+
+translate 50 0
+
+drawLine 0 0 -5 50
+drawLine 10 3 5 53
+drawLine 20 6 15 56
+drawLine 30 9 25 59
+end_block
+restore
+
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 800
+repeat_block vertical
+restore
+
+translate 0 200
+
+setPen 0xffff0000 2 dashline squarecap
+save
+repeat_block horizontal
+restore
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 780 0
+repeat_block horizontal
+restore
+
+translate 360 -240
+save
+repeat_block vertical
+restore
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 780
+repeat_block vertical
+
+resetMatrix
+translate 20 380
+setPen 0xffff00ff 5 dashdotline flatcap
+begin_block offset
+pen_setDashPattern [1 1 4 1 1 4]
+pen_setDashOffset -4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset -2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 0
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 6
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 8
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 10
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 12
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 14
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 16
+drawLine 0 0 300 0
+end_block offset
+
+resetMatrix
+translate 420 380
+setPen 0xffff00ff 5 dashdotline roundcap
+repeat_block offset
+
+resetMatrix
+setPen black 3 dashdotline
+pen_setCosmetic true
+translate 0 -150
+drawLine 500 160 500 410
+
+resetMatrix
+translate 300 480
+setPen blue 0
+
+begin_block clip_lines
+pen_setDashPattern [ 20 4 5 4 1 4 ]
+pen_setDashOffset 26.0
+drawLines [0 0 1000000 10 1000000 10 -1000000 20 -1000000 20 0 30]
+end_block clip_lines
+
+translate 0 45
+setPen blue 5
+repeat_block clip_lines
+
+translate 0 45
+setPen blue 5 SolidLine RoundCap
+repeat_block clip_lines
+
+translate 0 45
+setPen green 0
+
+begin_block clip_poly
+pen_setDashPattern [ 20 4 5 4 1 4 ]
+pen_setDashOffset 26.0
+drawPolyline [0 0 1000000 10 -1000000 20 0 30]
+end_block clip_poly
+
+translate 0 45
+setPen green 5
+repeat_block clip_poly
+
+translate 0 45
+setPen green 5 SolidLine RoundCap
+repeat_block clip_poly
diff --git a/tests/baseline/painting/scripts/linedashes2_aa.qps b/tests/baseline/painting/scripts/linedashes2_aa.qps
new file mode 100644
index 0000000000..c818ab62fe
--- /dev/null
+++ b/tests/baseline/painting/scripts/linedashes2_aa.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+import "linedashes2.qps" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/lines.qps b/tests/baseline/painting/scripts/lines.qps
new file mode 100644
index 0000000000..274a7f31ec
--- /dev/null
+++ b/tests/baseline/painting/scripts/lines.qps
@@ -0,0 +1,433 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 310 425)
+
+translate 10 10
+
+begin_block draw_lines
+ save
+ translate 50 50
+
+ save
+ setPen 0x7fff0000
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ # and then draw the lines the other direction
+ save
+ setPen 0x7f0000ff
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ restore
+
+ # and now with a clip
+ save
+ setClipRect -30 -30 60 60
+ setPen 0x7f00ff00
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ restore
+end_block
+
+save
+ translate 100 0
+ scale 2 2
+ repeat_block draw_lines
+restore
+
+translate 0 10
+
+save
+ translate 0 200
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+save
+ translate 100 200
+ scale 2 2
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+setPen 0x000000 8
+translate 350 240
+drawText 0 0 "Steep slopes:"
+
+translate 0 10
+
+drawLine 0 0 -8 400
+translate 20 0
+drawLine 0 0 -7 400
+translate 20 0
+drawLine 0 0 -6 400
+translate 20 0
+drawLine 0 0 -5 400
+translate 20 0
+drawLine 0 0 -4 400
+translate 20 0
+drawLine 0 0 -3 400
+translate 20 0
+drawLine 0 0 -2 400
+translate 20 0
+drawLine 0 0 -1 400
+translate 20 0
+drawLine 0 0 0 400
+translate 20 0
+drawLine 0 0 1 400
+translate 20 0
+drawLine 0 0 2 400
+translate 20 0
+drawLine 0 0 3 400
+translate 20 0
+drawLine 0 0 4 400
+translate 20 0
+drawLine 0 0 5 400
+translate 20 0
+drawLine 0 0 6 400
+translate 20 0
+drawLine 0 0 7 400
+translate 20 0
+drawLine 0 0 8 400
+
+resetMatrix
+
+translate 20 450
+
+drawText 0 0 "Zero length lines:"
+
+translate 0 20
+drawText 100 10 "Square cap"
+save
+begin_block points
+setPen 0x000000 1 solidline squarecap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline squarecap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline squarecap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline squarecap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline squarecap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline squarecap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline squarecap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline squarecap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline squarecap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline squarecap
+drawLine 78 0 78 0
+end_block points
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Round cap"
+save
+begin_block points2
+setPen 0x000000 1 solidline roundcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline roundcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline roundcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline roundcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline roundcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline roundcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline roundcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline roundcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline roundcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline roundcap
+drawLine 78 0 78 0
+end_block points2
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points2
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Flat cap"
+save
+begin_block points3
+setPen 0x000000 1 solidline flatcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline flatcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline flatcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline flatcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline flatcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline flatcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline flatcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline flatcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline flatcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline flatcap
+drawLine 78 0 78 0
+end_block points3
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points3
+
+resetMatrix
+translate -220 667.226
+drawText 230 -80 "Task 194266 (should see only one line):"
+setPen black
+drawRect 230.5 -70.5 122 12
+setRenderHint Antialiasing
+setPen red
+drawLine 236.842105263 -63.775117299 247.368421053 -63.775437504
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 640
+setPen black
+drawText 0 -10 "Task 207147 (should see two lines):"
+drawRect 0.5 0.5 64 64
+setRenderHint Antialiasing
+setPen red
+
+drawLine 4.5 4.5 4.5001 60.5
+drawLine 4.5 4.5 60.5 4.5001
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 730
+setPen black
+drawText 0 -10 "Task 229459 (should see one diagonal line):"
+drawRect 0.5 0.5 64 64
+setPen red 2 solidline flatcap
+
+setClipRect 2 2 63 63
+drawLine 1.5 1.5 33560000 33560000
diff --git a/tests/baseline/painting/scripts/lines2.qps b/tests/baseline/painting/scripts/lines2.qps
new file mode 100644
index 0000000000..af6ad65939
--- /dev/null
+++ b/tests/baseline/painting/scripts/lines2.qps
@@ -0,0 +1,179 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 20
+drawText 0 0 "Thin lines"
+
+translate 60 70
+
+save
+begin_block lines
+translate 0 -60
+translate 0 5
+setPen 0x000000 0.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 2
+drawLine -60 -2 60 2
+end_block
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore
+
+setRenderHint Antialiasing
+
+translate 300 0
+
+save
+repeat_block lines
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/lines3.qps b/tests/baseline/painting/scripts/lines3.qps
new file mode 100644
index 0000000000..676235e652
--- /dev/null
+++ b/tests/baseline/painting/scripts/lines3.qps
@@ -0,0 +1,171 @@
+
+clearRenderHint
+setPen black 0 solidline squarecap
+
+save
+translate 20 20
+
+begin_block lines
+
+# 0 -> 45 degress
+drawLine 100 100 200 90
+drawLine 100 100 200 80
+drawLine 100 100 200 70
+drawLine 100 100 200 60
+drawLine 100 100 200 50
+drawLine 100 100 200 40
+drawLine 100 100 200 30
+drawLine 100 100 200 20
+drawLine 100 100 200 10
+
+# 45
+drawLine 100 100 200 0
+
+# 45 -> 90
+drawLine 100 100 190 0
+drawLine 100 100 180 0
+drawLine 100 100 170 0
+drawLine 100 100 160 0
+drawLine 100 100 150 0
+drawLine 100 100 140 0
+drawLine 100 100 130 0
+drawLine 100 100 120 0
+drawLine 100 100 110 0
+
+# 90
+drawLine 100 100 100 0
+
+# 90 -> 135
+drawLine 100 100 90 0
+drawLine 100 100 80 0
+drawLine 100 100 70 0
+drawLine 100 100 60 0
+drawLine 100 100 50 0
+drawLine 100 100 40 0
+drawLine 100 100 30 0
+drawLine 100 100 20 0
+drawLine 100 100 10 0
+
+# 135
+drawLine 100 100 0 0
+
+# 135 -> 180 degress
+drawLine 100 100 0 10
+drawLine 100 100 0 20
+drawLine 100 100 0 30
+drawLine 100 100 0 40
+drawLine 100 100 0 50
+drawLine 100 100 0 60
+drawLine 100 100 0 70
+drawLine 100 100 0 80
+drawLine 100 100 0 90
+
+# 180
+drawLine 100 100 0 100
+
+# 180 -> 225
+drawLine 100 100 0 110
+drawLine 100 100 0 120
+drawLine 100 100 0 130
+drawLine 100 100 0 140
+drawLine 100 100 0 150
+drawLine 100 100 0 160
+drawLine 100 100 0 170
+drawLine 100 100 0 180
+drawLine 100 100 0 190
+
+# 225
+drawLine 100 100 0 200
+
+# 225 -> 270
+drawLine 100 100 10 200
+drawLine 100 100 20 200
+drawLine 100 100 30 200
+drawLine 100 100 40 200
+drawLine 100 100 50 200
+drawLine 100 100 60 200
+drawLine 100 100 70 200
+drawLine 100 100 80 200
+drawLine 100 100 90 200
+
+# 270
+drawLine 100 100 100 200
+
+# 270 -> 315 degrees
+drawLine 100 100 110 200
+drawLine 100 100 120 200
+drawLine 100 100 130 200
+drawLine 100 100 140 200
+drawLine 100 100 150 200
+drawLine 100 100 160 200
+drawLine 100 100 170 200
+drawLine 100 100 180 200
+drawLine 100 100 190 200
+
+# 315
+drawLine 100 100 200 200
+
+# 315 -> 360 degress
+drawLine 100 100 200 100
+drawLine 100 100 200 110
+drawLine 100 100 200 120
+drawLine 100 100 200 130
+drawLine 100 100 200 140
+drawLine 100 100 200 150
+drawLine 100 100 200 160
+drawLine 100 100 200 170
+drawLine 100 100 200 180
+drawLine 100 100 200 190
+
+end_block
+
+setRenderHint Antialiasing
+setPen 0x7fff0000 0 solidline squarecap
+repeat_block lines
+
+translate 250.5 0.5
+clearRenderHint
+setPen black 0 solidline squarecap
+repeat_block lines
+setRenderHint Antialiasing
+setPen 0x7fff0000 0 solidline squarecap
+repeat_block lines
+
+restore
+
+save
+
+translate 20 250
+clearRenderHint
+setPen black 1 solidline squarecap
+repeat_block lines
+setRenderHint Antialiasing
+setPen 0x7fff0000 1 solidline squarecap
+repeat_block lines
+
+translate 250.5 0.5
+clearRenderHint
+setPen black 1 soslidline squarecap
+repeat_block lines
+setRenderHint Antialiasing
+setPen 0x7fff0000 0 solidline squarecap
+repeat_block lines
+
+restore
+
+translate 20 500
+scale 1.5 1.5
+clearRenderHint
+setPen black 1 solidline squarecap
+repeat_block lines
+setRenderHint Antialiasing
+setPen 0x7fff0000 1 solidline squarecap
+repeat_block lines
+
+translate 250.5 0.5
+clearRenderHint
+setPen black 1 soslidline squarecap
+repeat_block lines
+setRenderHint Antialiasing
+setPen 0x7fff0000 0 solidline squarecap
+repeat_block lines
diff --git a/tests/baseline/painting/scripts/pathfill.qps b/tests/baseline/painting/scripts/pathfill.qps
new file mode 100644
index 0000000000..821b4684c9
--- /dev/null
+++ b/tests/baseline/painting/scripts/pathfill.qps
@@ -0,0 +1,38 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 850 420)
+
+setPen afff0000 4
+
+setBrush dome_rgb32.png
+drawEllipse 10 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 10 200 200
+
+setPen NoPen
+
+setBrush dome_rgb32.png
+drawEllipse 10 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 220 200 200
+
+setBrushOrigin -30 -30
+
+setPen afff0000 4
+setBrush dome_rgb32.png
+drawEllipse 430 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 10 200 200
+
+setPen NoPen
+setBrush dome_rgb32.png
+drawEllipse 430 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 220 200 200
+
+setPen black
+drawText 150 450 "No offset RGB/ARGB"
+drawText 550 450 "-30 offset RGB/ARGB" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/paths.qps b/tests/baseline/painting/scripts/paths.qps
new file mode 100644
index 0000000000..454b2a039d
--- /dev/null
+++ b/tests/baseline/painting/scripts/paths.qps
@@ -0,0 +1,49 @@
+# Version: 1
+
+setPen black 1
+setBrush 7f7fff
+
+setFont "arial" 12
+drawText 10 330 "Non-Cosmetic"
+drawText 10 730 "Cosmetic"
+
+path_moveTo star 50 0
+path_lineTo star 30 90
+path_lineTo star 100 60
+path_lineTo star 0 20
+path_lineTo star 80 100
+
+setFont "times" 50
+path_addText text 0 50 "ABCD, 1234, abcd, #¤%&"
+
+path_addRect rectncircle 0 0 75 75
+path_addEllipse rectncircle 25 25 75 75
+path_setFillRule rectncircle winding
+
+path_moveTo curve 100 0
+path_cubicTo curve 100 100 50 50 0 100
+
+begin_block drawing
+drawPath star
+translate 100 0
+drawPath rectncircle
+translate 100 0
+drawPath curve
+translate -200 100
+drawPath text
+end_block
+
+begin_block xform
+save
+translate 50 60
+rotate 10
+scale 1.0 0.7
+repeat_block drawing
+restore
+end_block xform
+
+setPen black 0
+setBrush ff7f7f
+translate 0 300
+repeat_block drawing
+repeat_block xform
diff --git a/tests/baseline/painting/scripts/paths_aa.qps b/tests/baseline/painting/scripts/paths_aa.qps
new file mode 100644
index 0000000000..4812e2fa5f
--- /dev/null
+++ b/tests/baseline/painting/scripts/paths_aa.qps
@@ -0,0 +1,4 @@
+# Version: 1
+
+setRenderHint LineAntialiasing
+import "paths.qps"
diff --git a/tests/baseline/painting/scripts/pattern_xform.qps b/tests/baseline/painting/scripts/pattern_xform.qps
new file mode 100644
index 0000000000..224969f1c7
--- /dev/null
+++ b/tests/baseline/painting/scripts/pattern_xform.qps
@@ -0,0 +1,79 @@
+# Version: 1
+# CheckVsReference: 5%
+
+#define basic block off screen
+save
+translate -1000 -1000
+begin_block drawrects
+setBrush green Dense4Pattern
+drawRect 0 0 40 40
+setBrush green DiagCrossPattern
+drawRect 40 0 40 40
+setBrush green HorPattern
+brushRotate 30
+drawRect 80 0 40 40
+fillRect 120 0 40 40
+save
+setPen brush 40 SolidLine FlatCap
+setBrush NoBrush
+drawLine 160 20 200 20
+restore
+end_block
+restore
+
+begin_block hintsuite
+save
+setRenderHint NonCosmeticBrushPatterns false
+setRenderHint SmoothPixmapTransform false
+translate 10 10
+repeat_block drawrects
+
+setRenderHint NonCosmeticBrushPatterns false
+setRenderHint SmoothPixmapTransform true
+translate 0 50
+repeat_block drawrects
+
+setRenderHint NonCosmeticBrushPatterns true
+setRenderHint SmoothPixmapTransform false
+translate 0 50
+repeat_block drawrects
+
+setRenderHint NonCosmeticBrushPatterns true
+setRenderHint SmoothPixmapTransform true
+translate 0 50
+repeat_block drawrects
+restore
+end_block
+
+save
+translate 0 200
+scale 2 2
+repeat_block hintsuite
+restore
+
+save
+translate 500 0
+scale 1.5 2.5
+rotate_y 60
+repeat_block hintsuite
+restore
+
+
+translate 0 650
+setBrush blue CrossPattern
+setPen red
+setRenderHint NonCosmeticBrushPatterns false
+
+begin_block dots
+save
+drawRect 0 0 50 50
+setBrushOrigin 12 0
+drawRect 50 0 50 50
+scale 2 1
+drawRect 50 0 50 50
+restore
+end_block dots
+
+setRenderHint NonCosmeticBrushPatterns true
+translate 0 60
+repeat_block dots
diff --git a/tests/baseline/painting/scripts/pattern_xform2.qps b/tests/baseline/painting/scripts/pattern_xform2.qps
new file mode 100644
index 0000000000..4f9314272d
--- /dev/null
+++ b/tests/baseline/painting/scripts/pattern_xform2.qps
@@ -0,0 +1,81 @@
+# Version: 1
+# CheckVsReference: 5%
+
+# 1: Check brush origin vs (non)cosmetic brush patterns
+
+setBrush blue CrossPattern
+begin_block blockName
+save
+setBrushOrigin 0 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 1 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 2 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 3 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 4 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 5 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 6 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 7 0
+fillRect 0 0 32 32
+translate 0 32
+setBrushOrigin 8 0
+fillRect 0 0 32 32
+restore
+end_block blockName
+
+save
+setBrush red CrossPattern
+scale 2 1
+repeat_block blockName
+restore
+
+save
+translate 0 300
+setRenderHint NonCosmeticBrushPatterns true
+setBrush blue CrossPattern
+repeat_block blockName
+setBrush red CrossPattern
+scale 2 1
+repeat_block blockName
+restore
+
+# 2: Check brush update after only xform or hint change
+translate 100 0
+
+save
+setPen NoPen
+setBrush blue DiagCrossPattern
+setRenderHint NonCosmeticBrushPatterns true
+drawRect 10 10 200 100
+scale 10 10
+drawRect 22 1 20 10
+drawRect 22 12 20 10
+setRenderHint NonCosmeticBrushPatterns false
+drawRect 1 12 20 10
+restore
+
+setBrush green DiagCrossPattern
+setPen brush 100 SolidLine FlatCap
+pen_setCosmetic true
+setBrush NoBrush
+translate 0 250
+setRenderHint NonCosmeticBrushPatterns true
+drawLine 10 60 210 60
+scale 10 10
+drawLine 22 6 42 6
+drawLine 22 17 42 17
+setRenderHint NonCosmeticBrushPatterns false
+drawLine 1 17 21 17
+
diff --git a/tests/baseline/painting/scripts/pens.qps b/tests/baseline/painting/scripts/pens.qps
new file mode 100644
index 0000000000..c72636dcef
--- /dev/null
+++ b/tests/baseline/painting/scripts/pens.qps
@@ -0,0 +1,133 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+
+translate 10 10
+
+begin_block penstyles
+setPen black 0 solidline flatcap
+drawLine 0 0 100 0
+setPen black 0 dashline flatcap
+drawLine 100 0 100 40
+setPen black 0 dotline flatcap
+drawLine 100 40 200 0
+setPen black 0 dashdotline flatcap
+drawLine 200 0 300 0
+setPen black 0 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen blue 2 solidline flatcap
+drawLine 0 0 100 0
+setPen blue 2 dashline flatcap
+drawLine 100 0 100 40
+setPen blue 2 dotline flatcap
+drawLine 100 40 200 0
+setPen blue 2 dashdotline flatcap
+drawLine 200 0 300 0
+setPen blue 2 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen red 5 solidline flatcap
+drawLine 0 0 100 0
+setPen red 5 dashline flatcap
+drawLine 100 0 100 40
+setPen red 5 dotline flatcap
+drawLine 100 40 200 0
+setPen red 5 dashdotline flatcap
+drawLine 200 0 300 0
+setPen red 5 dashdotdotline flatcap
+drawLine 300 0 400 40
+end_block
+
+translate 0 50
+scale 1 2
+repeat_block penstyles
+
+
+# Test cap styles
+resetMatrix
+translate 420 10
+setPen green 5 dashdotline flatcap
+drawLine 0 0 200 0
+setPen green 5 dashdotline roundcap
+drawLine 0 20 200 20
+setPen green 5 dashdotline squarecap
+drawLine 0 40 200 40
+
+
+# Test join styles
+resetMatrix
+translate 420 80
+setBrush nobrush
+begin_block joinstyles
+setPen orange 10 solidline flatcap miterjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen aquamarine 10 solidline squarecap beveljoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen purple 10 solidline roundcap roundjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+end_block
+
+translate 130 -200
+scale 2 1
+rotate 1
+repeat_block joinstyles
+
+# transparent lines
+resetMatrix
+translate 10 400
+setPen #7f000000
+drawLine 0 0 50 0
+setPen #7f000000 1 SolidLine
+drawLine 0 10 50 10
+setPen #7f000000 5 SolidLine
+drawLine 0 20 50 20
+setPen #7f000000 10 SolidLine
+drawLine 0 30 50 30
+setPen #7f000000
+drawLine 0 0 0 50
+setPen #7f000000 1 SolidLine
+drawLine 10 0 10 50
+setPen #7f000000 5 SolidLine
+drawLine 20 0 20 50
+setPen #7f000000 10 SolidLine
+drawLine 30 0 30 50
+
+# pen styles
+resetMatrix
+translate 0 500
+setPen black 0 DashLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotDotLine
+drawLine 20 20 100 20
+
+# scaling ellipse
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawEllipse -0.4 -0.4 0.8 0.8
+
+# scaling path
+path_addEllipse star -0.3 -0.3 0.6 0.6
+
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawPath star
diff --git a/tests/baseline/painting/scripts/pens_aa.qps b/tests/baseline/painting/scripts/pens_aa.qps
new file mode 100644
index 0000000000..066cac365f
--- /dev/null
+++ b/tests/baseline/painting/scripts/pens_aa.qps
@@ -0,0 +1,6 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+
+import "pens.qps" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/pens_cosmetic.qps b/tests/baseline/painting/scripts/pens_cosmetic.qps
new file mode 100644
index 0000000000..9120290462
--- /dev/null
+++ b/tests/baseline/painting/scripts/pens_cosmetic.qps
@@ -0,0 +1,116 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 585 470)
+
+path_addEllipse path 22 0 7 7
+path_addRect path 25 5 4 4
+
+translate 20 20
+
+setPen black 0
+pen_setCosmetic false
+
+begin_block lines
+ save
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+
+ translate 100 0
+ save
+ scale 4 1
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 200 0
+ save
+ scale 1 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 100 0
+ save
+ scale 4 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+ restore
+end_block
+
+drawText 580 15 "non-cosmetic, 0-width"
+translate 0 50
+
+setPen black 2
+pen_setCosmetic false
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+setRenderHint Antialiasing
+translate 0 20
+
+translate 0 50
+setPen black 0
+pen_setCosmetic false
+repeat_block lines
+drawText 580 15 "non-cosmetic, 0-width"
+
+translate 0 50
+
+setPen black 2
+pen_setCosmetic false
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+translate 0 70
+drawText 0 0 "scale(1, 1)"
+drawText 150 0 "scale(4, 1)"
+drawText 300 0 "scale(1, 4)"
+drawText 450 0 "scale(4, 4)" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/perspectives.qps b/tests/baseline/painting/scripts/perspectives.qps
new file mode 100644
index 0000000000..0b903e5260
--- /dev/null
+++ b/tests/baseline/painting/scripts/perspectives.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load image.png the_image
+
+translate 10 10
+# standard draw
+drawImage the_image 0 0
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ drawImage the_image 0 0
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ drawImage the_image 0 0
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ drawImage the_image 0 0
+restore
+restore
+
+setRenderHint SmoothPixmapTransform on
+setBrush red
+setPen black
+resetMatrix
+translate 100 720
+rotate_y 85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setBrush gam030.png
+setPen black 30
+translate 700 700
+rotate_y -85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0
+resetMatrix
+translate 300 760
+drawText 0 0 "Perspective Clipping" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/perspectives2.qps b/tests/baseline/painting/scripts/perspectives2.qps
new file mode 100644
index 0000000000..6762e21af4
--- /dev/null
+++ b/tests/baseline/painting/scripts/perspectives2.qps
@@ -0,0 +1,309 @@
+# Version: 1
+
+setRenderHint Antialiasing
+
+image_load zebra.png zebra_png
+
+image_convertToFormat zebra_png zebra ARGB32_Premultiplied
+
+translate 75 100
+# standard draw
+begin_block row1
+drawImage zebra -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage zebra -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage zebra -50 -50
+restore
+end_block row1
+
+resetMatrix
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row1
+
+resetMatrix
+setPen black
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform"
+
+resetMatrix
+translate 0 400
+
+image_load dome_argb32.png the_pixmap
+
+image_convertToFormat the_pixmap dome ARGB32
+
+setRenderHint SmoothPixmapTransform false
+
+translate 75 100
+# standard draw
+begin_block row2
+drawImage dome -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage dome -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage dome -50 -50
+restore
+end_block row2
+
+resetMatrix
+translate 0 400
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row2
+
+resetMatrix
+setPen black
+translate 0 400
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 0 400
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform"
diff --git a/tests/baseline/painting/scripts/pixmap_rotation.qps b/tests/baseline/painting/scripts/pixmap_rotation.qps
new file mode 100644
index 0000000000..8427af85af
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmap_rotation.qps
@@ -0,0 +1,31 @@
+# Version: 1
+# CheckVsReference: 0% (0 0 440 220)
+
+translate 120 120
+
+begin_block drawing
+save
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+restore
+end_block
+
+resetMatrix
+
+translate 340 120
+setRenderHint SmoothPixmapTransformation
+repeat_block drawing
+
+resetMatrix
+
+drawText 50 240 "Normal Xform"
+drawText 270 240 "Smooth Xform"
diff --git a/tests/baseline/painting/scripts/pixmap_rotation2.qps b/tests/baseline/painting/scripts/pixmap_rotation2.qps
new file mode 100644
index 0000000000..dfb93fe09c
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmap_rotation2.qps
@@ -0,0 +1,8 @@
+# Version: 1
+# CheckVsReference: 1%
+
+setRenderHint SmoothPixmapTransformation
+translate 400 -120
+rotate 45
+scale 400 400
+drawImage solid2x2.png 0 0
diff --git a/tests/baseline/painting/scripts/pixmap_scaling.qps b/tests/baseline/painting/scripts/pixmap_scaling.qps
new file mode 100644
index 0000000000..8a5ab2c60e
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmap_scaling.qps
@@ -0,0 +1,224 @@
+# Version: 1
+# CheckVsReference: 0% (0 30 600 70)
+# CheckVsReference: 0% (290 130 280 60)
+# CheckVsReference: 0% (0 180 250 90)
+
+# Hurra! Force line endings (?)
+
+translate 5 25
+setFont "arial" 8
+
+save
+ drawText 15 0 "opaque image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage solid2x2.png 0 0
+ restore
+
+
+restore
+
+save
+ translate 150 0
+ drawText 15 0 "alpha image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 0 150
+ drawText 15 0 "solid pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 150 150
+ drawText 15 0 "alpha pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 300 10
+ save
+ drawText 0 -10 "subrect solid image"
+ drawImage solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 0
+ drawText 0 -10 "subrect solid image"
+ drawImage alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 0 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+restore \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/pixmap_subpixel.qps b/tests/baseline/painting/scripts/pixmap_subpixel.qps
new file mode 100644
index 0000000000..d5b7b92fc9
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmap_subpixel.qps
@@ -0,0 +1,117 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 50 50
+
+# Pixmaps at 0.1 offset, unclipped
+begin_block draw_pixmaps
+save
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+# Tiled pixmaps at 0.1 offsets, unclipped
+translate 0 50
+begin_block draw_tiled
+save
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+
+path_moveTo clip 0 0
+path_lineTo clip width 0
+path_lineTo clip width 400
+path_lineTo clip 0 height
+setClipPath clip
+
+translate 0 50
+# Pixmaps at 0.1 offset, clipped
+repeat_block draw_pixmaps
+
+
+# Tiled pixmaps at 0.1 offsets...
+translate 0 50
+repeat_block draw_tiled
+
diff --git a/tests/baseline/painting/scripts/pixmapfragments.qps b/tests/baseline/painting/scripts/pixmapfragments.qps
new file mode 100644
index 0000000000..4c837b760f
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmapfragments.qps
@@ -0,0 +1,65 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 690 580)
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+pixmap_load dome_argb32.png the_pixmap
+begin_block draw_stuff
+save
+ drawPixmapFragments the_pixmap 1 50 50 25 25 60 60 1 1 0 1
+ drawPixmapFragments the_pixmap 1 150 50 25 25 60 60 1 1 0 0.5
+ drawPixmapFragments the_pixmap 1 250 50 25 25 60 60 1 1 30 1
+ drawPixmapFragments the_pixmap 1 350 50 25 25 60 60 1.5 1 0 1
+ drawPixmapFragments the_pixmap 1 450 50 25 25 60 60 1 1.5 0 1
+ drawPixmapFragments the_pixmap 2 550 50 25 25 40 40 0.5 0.5 -45 1 600 50 25 25 40 40 0.7 0.7 45 1
+restore
+end_block
+
+
+translate 0 120
+pixmap_load dome_rgb32.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed_mask.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_mono.png the_pixmap
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+
+resetMatrix
+translate 25 600
+drawText 0 0 "simple"
+translate 100 0
+drawText 0 0 "opacity"
+translate 100 0
+drawText 0 0 "rotation"
+translate 100 0
+drawText 0 0 "scale x"
+translate 100 0
+drawText 0 0 "scale y"
+translate 100 0
+drawText 0 0 "two fragments"
+translate 100 0
diff --git a/tests/baseline/painting/scripts/pixmaps.qps b/tests/baseline/painting/scripts/pixmaps.qps
new file mode 100644
index 0000000000..0b4ba2c4fb
--- /dev/null
+++ b/tests/baseline/painting/scripts/pixmaps.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 690 580)
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+pixmap_load dome_argb32.png the_pixmap
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawPixmap the_pixmap 0 0
+
+ # sub recting
+ translate 120 0
+ drawPixmap the_pixmap 0 0 40 40 0 0 40 40
+ drawPixmap the_pixmap 60 0 40 40 60 0 40 40
+ drawPixmap the_pixmap 0 60 40 40 0 60 40 40
+ drawPixmap the_pixmap 60 60 40 40 60 60 40 40
+ drawPixmap the_pixmap 0 40 40 20 0 40 40 20
+ drawPixmap the_pixmap 60 40 40 20 60 40 40 20
+ drawPixmap the_pixmap 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+pixmap_load dome_rgb32.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed_mask.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_mono.png the_pixmap
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/porter_duff.qps b/tests/baseline/painting/scripts/porter_duff.qps
new file mode 100644
index 0000000000..94e9c68522
--- /dev/null
+++ b/tests/baseline/painting/scripts/porter_duff.qps
@@ -0,0 +1,251 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+setBrush 0x7f000000
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+
+setBrush 0x1fff0000
+drawRect 0 0 50 50
+
+setBrush 0xdf00ff00
+drawRect 50 50 50 50
+
+setBrush 0x7f0000ff
+drawEllipse 30 30 40 40
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# ColorBurn
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# HardLight
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# SoftLight
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Difference
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Exclusion
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion"
diff --git a/tests/baseline/painting/scripts/porter_duff2.qps b/tests/baseline/painting/scripts/porter_duff2.qps
new file mode 100644
index 0000000000..f538371ca1
--- /dev/null
+++ b/tests/baseline/painting/scripts/porter_duff2.qps
@@ -0,0 +1,261 @@
+# Version: 1
+# CheckVsReference: 1% (0 50 600 100)
+# CheckVsReference: 1% (0 200 600 100)
+# CheckVsReference: 1% (0 350 600 100)
+# CheckVsReference: 1% (0 500 600 100)
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+gradient_clearStops
+gradient_appendStop 0 efff0000
+gradient_appendStop 0.5 dfffff00
+gradient_appendStop 1 ef00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 90 90
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+gradient_clearStops
+gradient_appendStop 0 afff0000
+gradient_appendStop 0.5 cf0000ff
+gradient_appendStop 1 bf00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 0 0 100 0
+drawEllipse 10 10 30 30
+drawEllipse 10 60 30 30
+drawEllipse 60 60 30 30
+drawEllipse 60 10 30 30
+drawEllipse 35 35 30 30
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# ColorBurn
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# HardLight
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# SoftLight
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Difference
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Exclusion
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion"
diff --git a/tests/baseline/painting/scripts/primitives.qps b/tests/baseline/painting/scripts/primitives.qps
new file mode 100644
index 0000000000..f44ba27566
--- /dev/null
+++ b/tests/baseline/painting/scripts/primitives.qps
@@ -0,0 +1,184 @@
+# Version: 1#Version: 1
+# CheckVsReference: 5%
+
+
+# CheckVsReference: 5%
+
+setBrush #ff7f7fff
+setPen black 1 solidline
+translate 20 20
+begin_block testblock
+save
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+translate 50 0
+setPen NoPen
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+restore
+save
+translate 0 50
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+translate 50 0
+setPen NoPen
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+restore
+save
+translate 0 100
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+translate 0 45
+drawPolyline [ 0 0 50 0 25 25 ]
+restore
+setPen NoPen
+translate 50 0
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+restore
+save
+translate -20 100
+drawPie 0 0 50 50 0 1500
+restore
+restore
+end_block
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+translate 0 250
+setBrush 7f7f7fff
+translate 20 20
+repeat_block testblock
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+save
+setRenderHint LineAntialiasing
+setBrush 7f7fff
+translate 20 500
+repeat_block testblock
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+restore
+setRenderHint LineAntialiasing false
+translate 420 20
+begin_block lines
+drawLine 0 0 100 0
+drawLine 0 0 100 10
+drawLine 0 0 100 20
+drawLine 0 0 100 30
+drawLine 0 0 100 40
+drawLine 0 0 100 50
+drawLine 0 0 100 60
+drawLine 0 0 100 70
+drawLine 0 0 100 80
+drawLine 0 0 100 90
+drawLine 0 0 100 100
+drawLine 0 0 90 100
+drawLine 0 0 80 100
+drawLine 0 0 70 100
+drawLine 0 0 60 100
+drawLine 0 0 50 100
+drawLine 0 0 40 100
+drawLine 0 0 30 100
+drawLine 0 0 20 100
+drawLine 0 0 10 100
+drawLine 0 0 0 100
+end_block
+setRenderHint LineAntialiasing
+translate 0 120
+repeat_block lines
+translate 0 120
+scale 5 2
+repeat_block lines
+resetMatrix
+translate 420 500
+begin_block roundedrects
+save
+drawRoundedRect 0 0 50 30 5 5
+translate 60 0
+drawRoundedRect 0 0 50 30 7.5 7.5
+translate 60 0
+drawRoundedRect 0 0 50 30 10 10
+translate 60 0
+drawRoundedRect 0 0 50 30 12.5 12.5
+translate 60 0
+drawRoundedRect 0 0 50 30 15 15
+restore
+save
+translate 0 40
+drawRoundedRect 0 0 50 30 20 20 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 40 40 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 60 60 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 80 80 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 100 100 RelativeSize
+restore
+end_block
+translate 0.5 80.5
+repeat_block roundedrects
+translate -0.5 79.5
+setRenderHint Antialiasing off
+repeat_block roundedrects
+resetMatrix
+setRenderHint Antialiasing off
+setPen black 1
+begin_block drawShapes
+translate 550.5 25
+rotate 45
+setBrush nobrush
+drawEllipse -10 -10 20 20
+drawLine 10 0 50 0
+drawRect 50 -7 14 14
+resetMatrix
+end_block
+setPen black 2
+translate 25 0
+repeat_block drawShapes
+setPen black 3
+translate 50 0
+repeat_block drawShapes
+setPen black 4
+translate 75 0
+repeat_block drawShapes
+resetMatrix
+setRenderHint Antialiasing off
+setPen nopen
+translate 550 100
+setBrush #7f7f7fff
+drawRect -0.5 -0.5 21 21
+setBrush red
+drawEllipse 0 0 20 20
+setBrush nobrush
+setPen black
+drawEllipse 0 0 20 20
+translate 25 0
+setPen nopen
+setBrush #7f7f7fff
+drawRect 0 0 20 20
+setBrush red
+drawEllipse 0 0 20 20 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/radial_gradients.qps b/tests/baseline/painting/scripts/radial_gradients.qps
new file mode 100644
index 0000000000..b55df8bde6
--- /dev/null
+++ b/tests/baseline/painting/scripts/radial_gradients.qps
@@ -0,0 +1,99 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 600 400)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 50 40 40
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 120 20 50 140 40
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 220 20 50 240 40
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setRadial 320 20 50 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 420 20 50 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 520 20 50 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 300 "brush transform"
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Reflect w/alpha"
+drawText 510 450 "Repeat w/alpha"
+
+# Radius and focal indicators
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+setClipRect 0 0 100 100
+drawEllipse -30 -30 100 100
+drawEllipse 35 35 11 11
+translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/radial_gradients_perspectives.qps b/tests/baseline/painting/scripts/radial_gradients_perspectives.qps
new file mode 100644
index 0000000000..4557354dce
--- /dev/null
+++ b/tests/baseline/painting/scripts/radial_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 110 100 230 230 240
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/rasterops.qps b/tests/baseline/painting/scripts/rasterops.qps
new file mode 100644
index 0000000000..d0f2da42df
--- /dev/null
+++ b/tests/baseline/painting/scripts/rasterops.qps
@@ -0,0 +1,87 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+
+setBrush black
+drawRect 10 10 60 500
+
+setCompositionMode SourceOrDestination
+translate 20 20
+
+begin_block drawShape
+ setBrush 0xffff0000
+ drawEllipse 5 5 30 30
+ setBrush 0xff00ff00
+ drawRect 0 0 20 20
+ setBrush 0xff0000ff
+ drawRect 20 20 20 20
+end_block
+
+begin_block loop
+ setCompositionMode SourceAndDestination
+ translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceOrNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSource
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+end_block
+
+resetMatrix
+setCompositionMode Source
+setBrush white
+drawRect 100 10 60 500
+translate 110 20
+repeat_block loop
+
+resetMatrix
+setCompositionMode Source
+translate 190 20
+repeat_block loop
+
+resetMatrix
+setPen black
+setCompositionMode SourceOver
+translate 250 45
+drawText 20 0 "Or ROP"
+translate 0 50
+drawText 20 0 "And ROP"
+translate 0 50
+drawText 20 0 "Xor ROP"
+translate 0 50
+drawText 20 0 "Nor ROP"
+translate 0 50
+drawText 20 0 "Nand ROP"
+translate 0 50
+drawText 0 0 "NSrcXorDst ROP"
+translate 0 50
+drawText 20 0 "NSrc ROP"
+translate 0 50
+drawText 0 0 "NSrcAndDst ROP"
+translate 0 50
+drawText 0 0 "SrcAndNDst ROP" \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/richtext.qps b/tests/baseline/painting/scripts/richtext.qps
new file mode 100644
index 0000000000..787c97421b
--- /dev/null
+++ b/tests/baseline/painting/scripts/richtext.qps
@@ -0,0 +1,9 @@
+drawTextDocument 10 10 "<img height=50 width=50 align=top src=:/images/border.png /><img height=10 width=10 valign=bottom src=:/images/border.png /><span style='font-size: 100px'>Xy</span>"
+drawTextDocument 10 210 "<img height=50 width=50 align=top src=:/images/border.png /><img height=10 width=10 valign=bottom src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+drawTextDocument 310 210 "<img height=10 width=10 align=top src=:/images/border.png /><img height=50 width=50 valign=bottom src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+drawTextDocument 10 310 "<img height=50 width=50 align=top src=:/images/border.png /><img height=50 width=50 valign=bottom src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+
+drawTextDocument 10 410 "<img height=10 width=10 align=top src=:/images/border.png /><img height=50 width=50 src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+drawTextDocument 10 510 "<img height=10 width=10 valign=bottom src=:/images/border.png /><img height=50 width=50 src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+drawTextDocument 310 410 "<img height=50 width=50 align=top src=:/images/border.png /><img height=10 width=10 src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
+drawTextDocument 310 510 "<img height=50 width=50 valign=bottom src=:/images/border.png /><img height=10 width=10 src=:/images/border.png /><span style='font-size: 25px'>Xy</span>"
diff --git a/tests/baseline/painting/scripts/sizes.qps b/tests/baseline/painting/scripts/sizes.qps
new file mode 100644
index 0000000000..12b0f4af1e
--- /dev/null
+++ b/tests/baseline/painting/scripts/sizes.qps
@@ -0,0 +1,90 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+setBrush black
+
+translate 10 10
+
+begin_block testblock
+drawRect 0 0 10 10
+drawRect 20 0 11 11
+drawRect 40 0 12 12
+drawRect 60 0 13 13
+drawRect 80 0 14 14
+drawRect 100 0 15 15
+drawRect 120 0 16 16
+drawRect 140 0 17 17
+drawRect 160 0 18 18
+drawRect 180 0 19 19
+
+drawEllipse 0 20 10 10
+drawEllipse 20 20 11 11
+drawEllipse 40 20 12 12
+drawEllipse 60 20 13 13
+drawEllipse 80 20 14 14
+drawEllipse 100 20 15 15
+drawEllipse 120 20 16 16
+drawEllipse 140 20 17 17
+drawEllipse 160 20 18 18
+drawEllipse 180 20 19 19
+
+drawRoundRect 0 40 10 10
+drawRoundRect 20 40 11 11
+drawRoundRect 40 40 12 12
+drawRoundRect 60 40 13 13
+drawRoundRect 80 40 14 14
+drawRoundRect 100 40 15 15
+drawRoundRect 120 40 16 16
+drawRoundRect 140 40 17 17
+drawRoundRect 160 40 18 18
+drawRoundRect 180 40 19 19
+
+drawPie 0 60 10 10 0 4320
+drawPie 20 60 11 11 0 4320
+drawPie 40 60 12 12 0 4320
+drawPie 60 60 13 13 0 4320
+drawPie 80 60 14 14 0 4320
+drawPie 100 60 15 15 0 4320
+drawPie 120 60 16 16 0 4320
+drawPie 140 60 17 17 0 4320
+drawPie 160 60 18 18 0 4320
+drawPie 180 60 19 19 0 4320
+
+drawArc 0 80 10 10 0 4320
+drawArc 20 80 11 11 0 4320
+drawArc 40 80 12 12 0 4320
+drawArc 60 80 13 13 0 4320
+drawArc 80 80 14 14 0 4320
+drawArc 100 80 15 15 0 4320
+drawArc 120 80 16 16 0 4320
+drawArc 140 80 17 17 0 4320
+drawArc 160 80 18 18 0 4320
+drawArc 180 80 19 19 0 4320
+
+drawChord 0 100 10 10 0 4320
+drawChord 20 100 11 11 0 4320
+drawChord 40 100 12 12 0 4320
+drawChord 60 100 13 13 0 4320
+drawChord 80 100 14 14 0 4320
+drawChord 100 100 15 15 0 4320
+drawChord 120 100 16 16 0 4320
+drawChord 140 100 17 17 0 4320
+drawChord 160 100 18 18 0 4320
+drawChord 180 100 19 19 0 4320
+
+end_block
+
+setPen red
+translate 0 150
+repeat_block testblock
+
+setRenderHint LineAntialiasing
+
+setPen nopen
+translate 0 150
+repeat_block testblock
+
+setPen red
+translate 0 150
+repeat_block testblock
diff --git a/tests/baseline/painting/scripts/smallcaps_path.qps b/tests/baseline/painting/scripts/smallcaps_path.qps
new file mode 100644
index 0000000000..4e89b50d96
--- /dev/null
+++ b/tests/baseline/painting/scripts/smallcaps_path.qps
@@ -0,0 +1,9 @@
+# Version: 1
+
+setPen black 1
+setBrush 7f7fff
+
+setFont "times" 50 Light false Default false false false SmallCaps
+path_addText text 0 50 "Hello Qt"
+
+drawPath text
diff --git a/tests/baseline/painting/scripts/statictext.qps b/tests/baseline/painting/scripts/statictext.qps
new file mode 100644
index 0000000000..c2a30d0864
--- /dev/null
+++ b/tests/baseline/painting/scripts/statictext.qps
@@ -0,0 +1,175 @@
+drawStaticText -5 5 "Text that is drawn outside the bounds..."
+
+translate 20 20
+begin_block text_drawing
+save
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen #7fff0000
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "alpha sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "alpha sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "alpha sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "alpha sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen black
+ save
+ scale 0.9 0.9
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 200 200
+ setPen black
+ save
+ scale -1 -1
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "flipped sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "flipped sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "flipped sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "flipped sansserif 10pt, bold italic"
+ restore
+
+ translate -200 20
+ setPen black
+ save
+ translate 200 90
+ rotate 185
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "rotated sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "rotated sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "rotated sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "rotated sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ gradient_appendStop 0 red
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 200 0
+ setPen brush
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 0 "gradient sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 20 "gradient sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 40 "gradient sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 60 "gradient sansserif 10pt, bold italic"
+restore
+end_block
+
+translate 250 0
+drawStaticText 25 640 "clipped to rectangle"
+save
+ setPen #3f000000
+ setBrush nobrush
+ drawRect 20 0 100 620
+ setClipRect 20 0 100 620
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+drawStaticText 25 640 "clipped to path"
+save
+ path_moveTo clip 20 0
+ path_cubicTo clip 0 200 40 400 20 400
+ path_lineTo clip 30 620
+ path_lineTo clip 30 0
+ path_lineTo clip 40 0
+ path_lineTo clip 40 620
+ path_lineTo clip 120 620
+ path_lineTo clip 120 0
+ path_lineTo clip 20 0
+ setPen #3f000000
+ setBrush nobrush
+ drawPath clip
+ setClipPath clip
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+save
+ setPen black
+ setFont "sansserif" 16 normal
+ drawStaticText 0 40 "e😃m😇o😍j😜i😸!"
+restore
+
+translate 0 55
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline
+ drawStaticText 0 20 "Underlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal strikeout
+ drawStaticText 0 20 "Struck out text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal normal overline
+ drawStaticText 0 20 "Overlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline strikeout overline
+ drawStaticText 0 20 "All the effects text drawing"
+restore
diff --git a/tests/baseline/painting/scripts/text.qps b/tests/baseline/painting/scripts/text.qps
new file mode 100644
index 0000000000..6bacdfd5e6
--- /dev/null
+++ b/tests/baseline/painting/scripts/text.qps
@@ -0,0 +1,199 @@
+# Version: 1
+
+drawText -5 5 "Text that is drawn outside the bounds..."
+
+translate 20 20
+begin_block text_drawing
+save
+ setFont "sansserif" 10 normal
+ drawText 0 20 "sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawText 0 60 "sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen #7fff0000
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "alpha sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "alpha sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawText 0 60 "alpha sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "alpha sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen black
+ save
+ scale 0.9 0.9
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 200 200
+ setPen black
+ save
+ scale -1 -1
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "flipped sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "flipped sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawStaticText 0 60 "flipped sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "flipped sansserif 10pt, bold italic"
+ restore
+
+ translate -200 20
+ setPen black
+ save
+ translate 200 90
+ rotate 185
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "rotated sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "rotated sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawText 0 60 "rotated sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "rotated sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ gradient_appendStop 0 red
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 200 0
+ setPen brush
+
+ setFont "sansserif" 10 normal
+ drawText 0 0 "gradient sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 20 "gradient sansserif 12pt, normal"
+
+ setFont "sansserif" 12 bold
+ drawText 0 40 "gradient sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 60 "gradient sansserif 10pt, bold italic"
+restore
+end_block
+
+translate 250 0
+drawText 25 640 "clipped to rectangle"
+save
+ setPen #3f000000
+ setBrush nobrush
+ drawRect 20 0 100 620
+ setClipRect 20 0 100 620
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+drawText 25 640 "clipped to path"
+save
+ path_moveTo clip 20 0
+ path_cubicTo clip 0 200 40 400 20 400
+ path_lineTo clip 30 620
+ path_lineTo clip 30 0
+ path_lineTo clip 40 0
+ path_lineTo clip 40 620
+ path_lineTo clip 120 620
+ path_lineTo clip 120 0
+ path_lineTo clip 20 0
+ setPen #3f000000
+ setBrush nobrush
+ drawPath clip
+ setClipPath clip
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+save
+ setPen black
+ setFont "sansserif" 10 normal
+ drawText 0 20 "testing glyph cache textures"
+
+ # Important that this gradient doesn't match any earlier
+ # gradients, so that it's not cached from before.
+ gradient_clearStops
+ gradient_appendStop 0 blue
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 red
+ gradient_setLinear 0 0 100 0
+ setPen nopen
+ drawRect 0 30 100 20
+
+ setPen black
+ drawText 0 70 "testing glyph cache textures"
+restore
+
+translate 0 75
+save
+ setPen black
+ setFont "sansserif" 16 normal
+ drawText 0 40 "e😃m😇o😍j😜i😸!✈️"
+restore
+
+translate 0 75
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline
+ drawText 0 20 "Underlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal strikeout
+ drawText 0 20 "Struck out text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default normal normal overline
+ drawText 0 20 "Overlined text drawing"
+restore
+
+translate 0 35
+save
+ setPen black
+ setFont "sansserif" 12 normal normal default underline strikeout overline
+ drawText 0 20 "All the effects text drawing"
+restore
+
+
diff --git a/tests/baseline/painting/scripts/text_perspectives.qps b/tests/baseline/painting/scripts/text_perspectives.qps
new file mode 100644
index 0000000000..4c74306265
--- /dev/null
+++ b/tests/baseline/painting/scripts/text_perspectives.qps
@@ -0,0 +1,102 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen black
+
+translate 10 10
+# standard draw
+begin_block text
+setBrush gray
+drawRect 0 0 300 300
+
+setFont "times" 3
+drawText 10 10 "Hello World...."
+
+setFont "times" 4
+drawText 10 20 "Hello World...."
+
+setFont "times" 5
+drawText 10 30 "Hello World...."
+
+setFont "times" 6
+drawText 10 40 "Hello World...."
+
+setFont "times" 7
+drawText 10 50 "Hello World...."
+
+setFont "times" 8
+drawText 10 60 "Hello World...."
+
+setFont "times" 9
+drawText 10 70 "Hello World...."
+
+setFont "times" 10
+drawText 10 80 "Hello World...."
+
+setFont "times" 16
+drawText 10 100 "Hello World...."
+
+setFont "times" 17
+drawText 10 120 "Hello World...."
+
+setFont "times" 18
+drawText 10 140 "Hello World...."
+
+setFont "times" 20
+drawText 10 160 "Hello World...."
+
+setFont "times" 22
+drawText 10 180 "Hello World...."
+
+setFont "times" 24
+drawText 10 205 "Hello World...."
+
+setFont "times" 26
+drawText 10 230 "Hello World...."
+
+setFont "times" 32
+drawText 10 260 "Hello World...."
+end_block text
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block text
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block text
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block text
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/baseline/painting/scripts/thinlines.qps b/tests/baseline/painting/scripts/thinlines.qps
new file mode 100644
index 0000000000..dddfff4538
--- /dev/null
+++ b/tests/baseline/painting/scripts/thinlines.qps
@@ -0,0 +1,79 @@
+# Version: 1
+# CheckVsReference: 5%
+
+drawRect 0 0 800 800
+
+path_addRect p 0 0 75 75
+path_addEllipse p 25 25 75 75
+
+translate -500 -500
+
+begin_block drawing
+ save
+ drawLine 0 0 100 100
+
+ translate 0 100
+ drawPath p
+
+ translate 0 110
+ drawRect 0 0 100 100
+
+ translate 0 110
+ drawPolyline [0 0 100 0 50 50]
+
+ drawPoint 40 40
+ drawPoint 41 40
+ drawPoint 42 40
+ drawPoint 43 40
+ drawPoint 44 40
+ drawPoint 45 40
+ drawPoint 46 40
+ drawPoint 47 40
+ drawPoint 48 40
+ drawPoint 49 40
+ drawPoint 50 40
+
+ restore
+end_block
+
+begin_block univsnonuni
+ save
+
+ save
+ scale 0.7 0.7
+ repeat_block drawing
+ restore
+
+ translate 100 0
+ save
+ scale 0.7 0.8
+ repeat_block drawing
+ restore
+
+ restore
+end_block
+
+resetMatrix
+translate 20.5 20.5
+
+begin_block row
+save
+ repeat_block univsnonuni
+
+ translate 240 0
+ save
+ rotate 10
+ repeat_block univsnonuni
+ restore
+
+ translate 220 0
+ save
+ rotate_y 30
+ repeat_block univsnonuni
+ restore
+restore
+end_block
+
+translate 0 320
+setRenderHint AntiAliasing
+repeat_block row
diff --git a/tests/baseline/painting/scripts/tiled_pixmap.qps b/tests/baseline/painting/scripts/tiled_pixmap.qps
new file mode 100644
index 0000000000..0ce3a7834c
--- /dev/null
+++ b/tests/baseline/painting/scripts/tiled_pixmap.qps
@@ -0,0 +1,84 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 639 638)
+
+
+translate 0 10
+setRenderHint Antialiasing
+
+pixmap_load dome_argb32 the_pixmap
+
+begin_block draw_stuff
+save
+
+ # Standard draw
+ drawTiledPixmap the_pixmap 0 0 150 100 0 0
+
+ # Standard draw with offset
+ translate 160 0
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+
+ # xformed
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform false
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+
+ # xformed with smooth xform
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+restore
+end_block
+
+translate 0 120
+pixmap_load dome_rgb32 the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed_mask the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_mono the_pixmap
+repeat_block draw_stuff
+
+
+################################################################################
+# Some helpful text...
+#
+
+resetMatrix
+translate 650 80
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+
+resetMatrix
+translate 10 630
+drawText 0 0 "normal"
+translate 160 0
+drawText 0 0 "offset"
+translate 160 0
+drawText 0 0 "xformed"
+translate 160 0
+drawText 0 0 "smooth xformed"
diff --git a/tests/baseline/painting/scripts/tinydashes.qps b/tests/baseline/painting/scripts/tinydashes.qps
new file mode 100644
index 0000000000..d41ced7f5f
--- /dev/null
+++ b/tests/baseline/painting/scripts/tinydashes.qps
@@ -0,0 +1,34 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addEllipse mypath 20.0 20.0 200.0 200.0
+
+save
+setPen blue 20 SolidLine FlatCap
+pen_setCosmetic true
+pen_setDashPattern [ 0.0004 0.0004 ]
+setBrush yellow
+
+drawPath mypath
+translate 300 0
+setRenderHint Antialiasing true
+drawPath mypath
+restore
+
+path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0
+
+setPen blue 20 DotLine FlatCap
+setBrush yellow
+
+save
+translate 0 300
+scale 0.0001 0.00011
+drawPath bigpath
+restore
+
+save
+translate 300 300
+setRenderHint Antialiasing true
+scale 0.0001 0.00011
+drawPath bigpath
+restore
diff --git a/tests/baseline/painting/tst_baseline_painting.cpp b/tests/baseline/painting/tst_baseline_painting.cpp
new file mode 100644
index 0000000000..f486b33430
--- /dev/null
+++ b/tests/baseline/painting/tst_baseline_painting.cpp
@@ -0,0 +1,489 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
+
+#include "paintcommands.h"
+#include <qbaselinetest.h>
+#include <QDir>
+#include <QPainter>
+#include <QPdfWriter>
+#include <QTemporaryFile>
+#if QT_CONFIG(process)
+#include <QProcess>
+#endif
+
+#ifndef QT_NO_OPENGL
+#include <QOpenGLFramebufferObjectFormat>
+#include <QOpenGLContext>
+#include <QOpenGLPaintDevice>
+#endif
+
+#include <algorithm>
+
+#ifndef GL_RGB10
+#define GL_RGB10 0x8052
+#endif
+#ifndef GL_RGB10_A2
+#define GL_RGB10_A2 0x8059
+#endif
+
+class tst_Lancelot : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_Lancelot();
+
+private:
+ enum GraphicsEngine {
+ Raster = 0,
+ OpenGL = 1,
+ Pdf = 2
+ };
+
+ void setupTestSuite(const QStringList& blacklist = QStringList());
+ void runTestSuite(GraphicsEngine engine, QImage::Format format,
+ const QSurfaceFormat &contextFormat = QSurfaceFormat::defaultFormat());
+ void paint(QPaintDevice *device, GraphicsEngine engine, QImage::Format format, const QStringList &script, const QString &filePath);
+
+ QStringList qpsFiles;
+ QHash<QString, QStringList> scripts;
+ QHash<QString, quint16> scriptChecksums;
+ QString scriptsDir;
+
+private slots:
+ void initTestCase();
+ void init();
+
+ void testRasterARGB32PM_data();
+ void testRasterARGB32PM();
+ void testRasterRGB32_data();
+ void testRasterRGB32();
+ void testRasterARGB32_data();
+ void testRasterARGB32();
+ void testRasterRGB16_data();
+ void testRasterRGB16();
+ void testRasterA2RGB30PM_data();
+ void testRasterA2RGB30PM();
+ void testRasterBGR30_data();
+ void testRasterBGR30();
+ void testRasterARGB8565PM_data();
+ void testRasterARGB8565PM();
+ void testRasterGrayscale8_data();
+ void testRasterGrayscale8();
+ void testRasterRGBA64PM_data();
+ void testRasterRGBA64PM();
+ void testRasterRGBA16F_data();
+ void testRasterRGBA16F();
+ void testRasterRGBA32FPM_data();
+ void testRasterRGBA32FPM();
+
+ void testPdf_data();
+ void testPdf();
+
+#ifndef QT_NO_OPENGL
+ void testOpenGL_data();
+ void testOpenGL();
+ void testOpenGLBGR30_data();
+ void testOpenGLBGR30();
+ void testCoreOpenGL_data();
+ void testCoreOpenGL();
+private:
+ void initOpenGL();
+ bool checkSystemGLSupport();
+ bool checkSystemCoreGLSupport();
+#endif
+};
+
+tst_Lancelot::tst_Lancelot()
+{
+}
+
+void tst_Lancelot::initTestCase()
+{
+ // Check and setup the environment. We treat failures because of test environment
+ // (e.g. script files not found) as just warnings, and not QFAILs, to avoid false negatives
+ // caused by environment or server instability
+
+ QByteArray msg;
+ if (!QBaselineTest::connectToBaselineServer(&msg))
+ QSKIP(msg);
+
+ QString baseDir = QFINDTESTDATA("scripts/text.qps");
+ scriptsDir = baseDir.left(baseDir.lastIndexOf('/')) + '/';
+ QDir qpsDir(scriptsDir);
+ qpsFiles = qpsDir.entryList(QStringList() << QLatin1String("*.qps"), QDir::Files | QDir::Readable);
+ if (qpsFiles.isEmpty()) {
+ qWarning() << "No qps script files found in" << qpsDir.path();
+ QSKIP("Aborted due to errors.");
+ }
+
+ std::sort(qpsFiles.begin(), qpsFiles.end());
+ foreach (const QString& fileName, qpsFiles) {
+ QFile file(scriptsDir + fileName);
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray cont = file.readAll();
+ scripts.insert(fileName, QString::fromUtf8(cont).split(QLatin1Char('\n'), Qt::SkipEmptyParts));
+ scriptChecksums.insert(fileName, qChecksum(cont));
+ }
+
+#ifndef QT_NO_OPENGL
+ initOpenGL();
+#endif
+}
+
+void tst_Lancelot::init()
+{
+ // This gets called for every row. QSKIP if current item is blacklisted on the baseline server:
+ QBASELINE_SKIP_IF_BLACKLISTED;
+}
+
+void tst_Lancelot::testRasterARGB32PM_data()
+{
+ setupTestSuite();
+}
+
+
+void tst_Lancelot::testRasterARGB32PM()
+{
+ runTestSuite(Raster, QImage::Format_ARGB32_Premultiplied);
+}
+
+
+void tst_Lancelot::testRasterARGB32_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterARGB32()
+{
+ runTestSuite(Raster, QImage::Format_ARGB32);
+}
+
+
+void tst_Lancelot::testRasterRGB32_data()
+{
+ setupTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB32()
+{
+ runTestSuite(Raster, QImage::Format_RGB32);
+}
+
+
+void tst_Lancelot::testRasterRGB16_data()
+{
+ setupTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB16()
+{
+ runTestSuite(Raster, QImage::Format_RGB16);
+}
+
+
+void tst_Lancelot::testRasterA2RGB30PM_data()
+{
+ setupTestSuite();
+}
+
+
+void tst_Lancelot::testRasterA2RGB30PM()
+{
+ runTestSuite(Raster, QImage::Format_A2RGB30_Premultiplied);
+}
+
+
+void tst_Lancelot::testRasterBGR30_data()
+{
+ setupTestSuite();
+}
+
+
+void tst_Lancelot::testRasterBGR30()
+{
+ runTestSuite(Raster, QImage::Format_BGR30);
+}
+
+
+void tst_Lancelot::testRasterARGB8565PM_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterARGB8565PM()
+{
+ runTestSuite(Raster, QImage::Format_ARGB8565_Premultiplied);
+}
+
+
+void tst_Lancelot::testRasterGrayscale8_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterGrayscale8()
+{
+ runTestSuite(Raster, QImage::Format_Grayscale8);
+}
+
+
+void tst_Lancelot::testRasterRGBA64PM_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterRGBA64PM()
+{
+ runTestSuite(Raster, QImage::Format_RGBA64_Premultiplied);
+}
+
+
+void tst_Lancelot::testRasterRGBA16F_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterRGBA16F()
+{
+ runTestSuite(Raster, QImage::Format_RGBA16FPx4);
+}
+
+void tst_Lancelot::testRasterRGBA32FPM_data()
+{
+ setupTestSuite();
+}
+
+void tst_Lancelot::testRasterRGBA32FPM()
+{
+ runTestSuite(Raster, QImage::Format_RGBA32FPx4_Premultiplied);
+}
+
+
+void tst_Lancelot::testPdf_data()
+{
+#ifdef Q_OS_MACOS
+ setupTestSuite();
+#else
+ QSKIP("Pdf testing only implemented for macOS");
+#endif
+}
+
+void tst_Lancelot::testPdf()
+{
+ runTestSuite(Pdf, QImage::Format_RGB32);
+}
+
+
+#ifndef QT_NO_OPENGL
+void tst_Lancelot::initOpenGL()
+{
+ // Stencil buffer is needed for clipping
+ QSurfaceFormat glFormat;
+ glFormat.setStencilBufferSize(8);
+ QSurfaceFormat::setDefaultFormat(glFormat);
+}
+
+bool tst_Lancelot::checkSystemGLSupport()
+{
+ QWindow win;
+ win.setSurfaceType(QSurface::OpenGLSurface);
+ win.create();
+ QOpenGLFramebufferObjectFormat fmt;
+ fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
+ fmt.setSamples(4);
+ QOpenGLContext ctx;
+ if (!ctx.create() || !ctx.makeCurrent(&win))
+ return false;
+ QOpenGLFramebufferObject fbo(800, 800, fmt);
+ if (!fbo.isValid() || !fbo.bind())
+ return false;
+
+ return true;
+}
+
+bool tst_Lancelot::checkSystemCoreGLSupport()
+{
+ if (QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL)
+ return false;
+
+ QSurfaceFormat coreFormat(QSurfaceFormat::defaultFormat());
+ coreFormat.setVersion(3, 2);
+ coreFormat.setProfile(QSurfaceFormat::CoreProfile);
+ QWindow win;
+ win.setSurfaceType(QSurface::OpenGLSurface);
+ win.setFormat(coreFormat);
+ win.create();
+ QOpenGLFramebufferObjectFormat fmt;
+ fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
+ fmt.setSamples(4);
+ QOpenGLContext ctx;
+ ctx.setFormat(coreFormat);
+ if (!ctx.create() || !ctx.makeCurrent(&win))
+ return false;
+ QOpenGLFramebufferObject fbo(800, 800, fmt);
+ if (!fbo.isValid() || !fbo.bind())
+ return false;
+
+ return true;
+}
+
+void tst_Lancelot::testOpenGL_data()
+{
+ if (!checkSystemGLSupport())
+ QSKIP("System under test does not meet preconditions for GL testing. Skipping.");
+ QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
+ setupTestSuite(localBlacklist);
+}
+
+
+void tst_Lancelot::testOpenGL()
+{
+ runTestSuite(OpenGL, QImage::Format_RGB32);
+}
+
+void tst_Lancelot::testOpenGLBGR30_data()
+{
+ tst_Lancelot::testOpenGL_data();
+}
+
+void tst_Lancelot::testOpenGLBGR30()
+{
+ runTestSuite(OpenGL, QImage::Format_BGR30);
+}
+
+void tst_Lancelot::testCoreOpenGL_data()
+{
+ if (!checkSystemCoreGLSupport())
+ QSKIP("System under test does not meet preconditions for Core Profile GL testing. Skipping.");
+ QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
+ setupTestSuite(localBlacklist);
+}
+
+void tst_Lancelot::testCoreOpenGL()
+{
+ QSurfaceFormat coreFormat(QSurfaceFormat::defaultFormat());
+ coreFormat.setVersion(3, 2);
+ coreFormat.setProfile(QSurfaceFormat::CoreProfile);
+ runTestSuite(OpenGL, QImage::Format_RGB32, coreFormat);
+}
+#endif
+
+
+void tst_Lancelot::setupTestSuite(const QStringList& blacklist)
+{
+ QTest::addColumn<QString>("qpsFile");
+ foreach (const QString &fileName, qpsFiles) {
+ if (blacklist.contains(fileName))
+ continue;
+ QBaselineTest::newRow(fileName.toLatin1(), scriptChecksums.value(fileName)) << fileName;
+ }
+}
+
+
+void tst_Lancelot::runTestSuite(GraphicsEngine engine, QImage::Format format, const QSurfaceFormat &contextFormat)
+{
+ QFETCH(QString, qpsFile);
+
+ QString filePath = scriptsDir + qpsFile;
+ QStringList script = scripts.value(qpsFile);
+ QImage rendered;
+
+ if (engine == Raster) {
+ QImage img(800, 800, format);
+ paint(&img, engine, format, script, QFileInfo(filePath).absoluteFilePath());
+ rendered = img;
+#ifndef QT_NO_OPENGL
+ } else if (engine == OpenGL) {
+ QWindow win;
+ win.setSurfaceType(QSurface::OpenGLSurface);
+ win.setFormat(contextFormat);
+ win.create();
+ QOpenGLContext ctx;
+ ctx.setFormat(contextFormat);
+ QVERIFY(ctx.create());
+ QVERIFY(ctx.makeCurrent(&win));
+ QOpenGLFramebufferObjectFormat fmt;
+ fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
+ fmt.setSamples(4);
+ if (format == QImage::Format_BGR30)
+ fmt.setInternalTextureFormat(ctx.isOpenGLES() ? GL_RGB10_A2 : GL_RGB10);
+ QOpenGLFramebufferObject fbo(800, 800, fmt);
+ fbo.bind();
+ QOpenGLPaintDevice pdv(800, 800);
+ paint(&pdv, engine, format, script, QFileInfo(filePath).absoluteFilePath());
+ rendered = fbo.toImage().convertToFormat(format);
+#endif
+ } else if (engine == Pdf) {
+#if QT_CONFIG(process)
+ QString tempStem(QDir::tempPath() + QLatin1String("/lancelot_XXXXXX_") + qpsFile.chopped(4));
+
+ QTemporaryFile pdfFile(tempStem + QLatin1String(".pdf"));
+ QVERIFY(pdfFile.open());
+ QPdfWriter writer(&pdfFile);
+ writer.setPdfVersion(QPdfWriter::PdfVersion_1_6);
+ QPageSize pageSize(QSize(800, 800), QStringLiteral("LancePage"), QPageSize::ExactMatch);
+ writer.setPageSize(pageSize);
+ writer.setPageMargins(QMarginsF());
+ writer.setResolution(72);
+ paint(&writer, engine, format, script, QFileInfo(filePath).absoluteFilePath());
+ pdfFile.close();
+
+ // Convert pdf to something we can read into a QImage, using macOS' sips utility
+ QTemporaryFile pngFile(tempStem + QLatin1String(".png"));
+ QVERIFY(pngFile.open()); // Just create the file name
+ pngFile.close();
+ QProcess proc;
+ const char *rawArgs = "-s format png -o";
+ QStringList argList = QString::fromLatin1(rawArgs).split(QLatin1Char(' '));
+ proc.start(QLatin1String("sips"), argList << pngFile.fileName() << pdfFile.fileName());
+ proc.waitForFinished(2 * 60 * 1000); // May need some time
+
+ rendered = QImage(pngFile.fileName());
+#endif
+ }
+
+ QBASELINE_TEST(rendered);
+}
+
+void tst_Lancelot::paint(QPaintDevice *device, GraphicsEngine engine, QImage::Format format, const QStringList &script, const QString &filePath)
+{
+ QPainter p(device);
+ PaintCommands pcmd(script, 800, 800, format);
+ //pcmd.setShouldDrawText(false);
+ switch (engine) {
+ case OpenGL:
+ pcmd.setType(OpenGLBufferType); // version/profile is communicated through the context's format()
+ break;
+ case Pdf:
+ pcmd.setType(PdfType);
+ break;
+ case Raster: // fallthrough
+ default:
+ pcmd.setType(ImageType);
+ break;
+ }
+ pcmd.setPainter(&p);
+ pcmd.setFilePath(filePath);
+ pcmd.runCommands();
+ p.end();
+}
+
+#define main _realmain
+QTEST_MAIN(tst_Lancelot)
+#undef main
+
+int main(int argc, char *argv[])
+{
+ // Avoid rendering variations caused by QHash randomization
+ QHashSeed::setDeterministicGlobalSeed();
+
+ QBaselineTest::handleCmdLineArgs(&argc, &argv);
+ return _realmain(argc, argv);
+}
+
+#include "tst_baseline_painting.moc"