[PATCH 4/4] tests: add transform and scale tests

Micah Fedke micah.fedke at collabora.co.uk
Tue Feb 7 14:42:04 UTC 2017


These tests check all combinations of wl_surface::set_buffer_transform
and wl_surface::set_buffer_scale
---
 Makefile.am                                |   7 +-
 tests/reference/transform_and_scale-01.png | Bin 0 -> 4133 bytes
 tests/reference/transform_and_scale-02.png | Bin 0 -> 2731 bytes
 tests/reference/transform_and_scale-03.png | Bin 0 -> 1544 bytes
 tests/reference/transform_and_scale-04.png | Bin 0 -> 4353 bytes
 tests/reference/transform_and_scale-05.png | Bin 0 -> 2918 bytes
 tests/reference/transform_and_scale-06.png | Bin 0 -> 1632 bytes
 tests/reference/transform_and_scale-07.png | Bin 0 -> 4097 bytes
 tests/reference/transform_and_scale-08.png | Bin 0 -> 2717 bytes
 tests/reference/transform_and_scale-09.png | Bin 0 -> 1500 bytes
 tests/reference/transform_and_scale-10.png | Bin 0 -> 4314 bytes
 tests/reference/transform_and_scale-11.png | Bin 0 -> 2918 bytes
 tests/reference/transform_and_scale-12.png | Bin 0 -> 1625 bytes
 tests/reference/transform_and_scale-13.png | Bin 0 -> 4051 bytes
 tests/reference/transform_and_scale-14.png | Bin 0 -> 2680 bytes
 tests/reference/transform_and_scale-15.png | Bin 0 -> 1512 bytes
 tests/reference/transform_and_scale-16.png | Bin 0 -> 4433 bytes
 tests/reference/transform_and_scale-17.png | Bin 0 -> 2969 bytes
 tests/reference/transform_and_scale-18.png | Bin 0 -> 1684 bytes
 tests/reference/transform_and_scale-19.png | Bin 0 -> 4089 bytes
 tests/reference/transform_and_scale-20.png | Bin 0 -> 2717 bytes
 tests/reference/transform_and_scale-21.png | Bin 0 -> 1507 bytes
 tests/reference/transform_and_scale-22.png | Bin 0 -> 4368 bytes
 tests/reference/transform_and_scale-23.png | Bin 0 -> 2893 bytes
 tests/reference/transform_and_scale-24.png | Bin 0 -> 1603 bytes
 tests/reference/weston-banner.png          | Bin 0 -> 3355 bytes
 tests/transform-and-scale-shot-test.c      | 112 +++++++++++++++++++++++++++++
 27 files changed, 118 insertions(+), 1 deletion(-)
 create mode 100644 tests/reference/transform_and_scale-01.png
 create mode 100644 tests/reference/transform_and_scale-02.png
 create mode 100644 tests/reference/transform_and_scale-03.png
 create mode 100644 tests/reference/transform_and_scale-04.png
 create mode 100644 tests/reference/transform_and_scale-05.png
 create mode 100644 tests/reference/transform_and_scale-06.png
 create mode 100644 tests/reference/transform_and_scale-07.png
 create mode 100644 tests/reference/transform_and_scale-08.png
 create mode 100644 tests/reference/transform_and_scale-09.png
 create mode 100644 tests/reference/transform_and_scale-10.png
 create mode 100644 tests/reference/transform_and_scale-11.png
 create mode 100644 tests/reference/transform_and_scale-12.png
 create mode 100644 tests/reference/transform_and_scale-13.png
 create mode 100644 tests/reference/transform_and_scale-14.png
 create mode 100644 tests/reference/transform_and_scale-15.png
 create mode 100644 tests/reference/transform_and_scale-16.png
 create mode 100644 tests/reference/transform_and_scale-17.png
 create mode 100644 tests/reference/transform_and_scale-18.png
 create mode 100644 tests/reference/transform_and_scale-19.png
 create mode 100644 tests/reference/transform_and_scale-20.png
 create mode 100644 tests/reference/transform_and_scale-21.png
 create mode 100644 tests/reference/transform_and_scale-22.png
 create mode 100644 tests/reference/transform_and_scale-23.png
 create mode 100644 tests/reference/transform_and_scale-24.png
 create mode 100644 tests/reference/weston-banner.png
 create mode 100644 tests/transform-and-scale-shot-test.c

diff --git a/Makefile.am b/Makefile.am
index cdf82ab4..44381d4b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1214,7 +1214,8 @@ weston_tests =					\
 	roles.weston				\
 	subsurface.weston			\
 	subsurface-shot.weston			\
-	devices.weston
+	devices.weston				\
+	transform-and-scale-shot.weston
 
 ivi_tests =
 
@@ -1400,6 +1401,10 @@ nodist_viewporter_weston_SOURCES =		\
 viewporter_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
 viewporter_weston_LDADD = libtest-client.la
 
+transform_and_scale_shot_weston_SOURCES = tests/transform-and-scale-shot-test.c
+transform_and_scale_shot_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
+transform_and_scale_shot_weston_LDADD = libtest-client.la
+
 if ENABLE_XWAYLAND_TEST
 weston_tests +=	xwayland-test.weston
 xwayland_test_weston_SOURCES = tests/xwayland-test.c
diff --git a/tests/reference/transform_and_scale-01.png b/tests/reference/transform_and_scale-01.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc7ebda6ff830b6947a2f9036a07acf4ed11ae24
GIT binary patch
literal 4133
zcmeHK`B&0e|HpL37MGlw$uecisi_>)soYSpnKU&e%PdR7t<e-kOT`66olKovD;-VE
zNXsSnTtG!6!zK3}R3z6RMN~u-7xa7kexLLGY0h(=Kj67=xSY?2!@ZyPYkS|vSFf1L
z?me;>0)fbyn;Ba}AQBhA_odytz~{Er83QnV>tbPQ4B7emdPT`khCt*;&5eJv33|aB
z^Yl9CIv&AK=T%somSW}*e@#KiR^=Xi<C{X<buIgMg{W6jQN}WgcSY}|`)|g!9JD)T
z_LsEfll`hrQjeo63oe|#bs5vK>-$s3oWA+yJEzktoeSNY&dXzqHJG#ytJuvoN*J`W
z+dtr5>U{ONwa#MPa>pVX@<&A!P7-2Zu<KhXRi_J@|2TzA7!fubmIxzqThtHYa8#6`
z=8uXJk`ERBZ(?zNN`=xix08sHJKlArF}MTUS;Lb5fBRp*`qvb7cA}}tSWG>B{J1x(
zZfL=!wzjse*%XQ&TyWv^5CV0NqTj{G%Mg0<J?u~@R8UaOr#->J!5BwkVIi77)%^NW
zLTqeo1(S#0Sb3b3M1W)GV!v0r^3ve#56n8O=e?Vg`LEZe1nY7t1~ozasg;$L;o;$z
zh9Rq8`c%)J^&KvE_TzN3syqf*<Uq+S8WG>2or!6Cc0%Iia*L8rLDY3?YXcRlh^RjN
zqq7q$EB?Y7u))H at Lf%;fq3q3 at CU|~LO$}?)JWMRK<+iGyJ2&9AZ;mxIG(_3n;DXKB
zkpnO$CQ(e at Dvlx)3ahKDL)I3$dU~uZEG&>n at dmdn^0tNj<|<D~+iTdb$B-1j8}0A!
z_hgh-S5*ZWykwGm2nak*!0rNXB~7RI?SHG;+uQ4}XGA-PZm)AV-C5jGq{&B6$2|v5
z7AX0LBF5j{Z5>tj<I-W=#47_;6%`eEd3i*O)YR0%a*Q at p#Gj5FA-1%%cnsuWMk<=e
z5=b4I@#pS!k2T=+pMQUQJ+z^|zJ7jwemrawwuJQYCh2Qv_$<$~DJv7JhI)I;{b#Kg
zayQfV at KtI|lT^_CcCV~&-lUI>d1XxpkWuPs<1P+mYhV at hSp$R6l`nmbUd#+F&qNhN
z+<0?NPL5m8OXbekgEY-lm_5<=b34TGa9GEoLx-p<{T2xc30ZfV6P5Mlj_U4j(#~N9
zmxpANZ-#yyTk8T&S6h2~J9rQPpk3N&b at kQF3n7$G&z?PdFx_(d-lqoq=KM${+E=tR
znPjkRMpjFRkN2;=BNy|UN5HKuU=Z#Y46EEZaznchYiMYQ2RQH9vqx4|R!d8Zy0zS~
zz#^A9P~ah}^92Q`kOO&^=`Jh?asXV`c`((KspFH84F2oQn>Rk=4RlwP at T~_z(fdCo
zi*A-wghh>b5#L_V?|x~huctRMdH+tWuj|gXSV_mb-j9=L$NtjyIw~rvBTd6+t!smi
zqW~J^=H~Jm at MZ_wBX|KJI9%P{VO{{iFhm;$L&BVhXasS at E86)vVUZRi&zYIIwU|^^
zSXi-8ASn}p(YCj=w4AWIkHPR9!^OELr>Cda7Ff)DE2y7u=ks5`(gjD6mOHAbd;gVQ
zr4<3u*49Qp<blCdGk4YqwhZBKk>93QlRgV^Y3eAnGA$-1#%Hw3gWZ{qzJf-h0iHP~
zaTS%7LupaYiqP;a{)ec2(^FHUcvlodS<ckLB2Mr2jT^$xX^!f5YBb+7V}3l=5Pv>w
zD`+Tt+_^l at L&tlpptMvQDt}b>>IoYMhflq|PN?PKcX!dI%3BZ-y~LhwIN6(haj5X`
z^73-?<dY|U`bnztcy4iVaYcnSa<0zd)-CrETXQor(JIp?L^zkr9%L}Wg+sQ=lnR!&
zW0m{U4fr{k*RNi^5~$wu_d6!1tEzfYHd2;$3I?m*7JglcngPbMXD*1+qN2)|71}a1
z+^%0l68DXbA7R%Pd~4_C<{kz&ZjRRa<ukZ9lKFhT4 at G#>bf5g;vrX_NZJE2EqV#-w
zpojT+FRsx?LilzqdZ at 5;82!lMFG&?mrwgH>^%=itXpmGc*_A0KDE{gKh{wLm&92V#
zfWcsNmTiQ@{hz^;-Ey2<{@gK;Z$%B_yJ(gjj_Bd2si{?Vr)y*Ef`Wn~@&RNt_$6KZ
zhQFz8v at Fft+k1P7CO^clcUC0eSJRKwUZ~nH?L}gqJ9~C;Cf6dZ)PaIVtSUi_goD>r
zO%rYOFL^TW^}NKAS#u`493>ip1$hIrULjT{mX`5##iK>GWekT9WC_qY;8K2Gp1NJt
z7qBCgpc`hO(i64s(BPX=?%mcz*{zhSs`K1ETXZ at -vB6P>=I-tu#7 at 8G*7-c!jm}_j
zI2=FoS;rq&NY-{Sji5ei8X7uKM{1b3GyNQU8c19QiU^(g_|)0inf)R*c5ijhX$=iq
z=_ify5y<uR^*O1(- at bi2J78s`eBQnH;Wzuxo}Q78QNZwAlv75%h>6{1r~CT)6ciND
z{Tu;`8b)EA=!(FiG)|qmnm?k2+}z$=jEjql9QF2>%$6U<X$`|=)M2n2<R&1>F!4tE
zjur>-#MZ{9;KWe(Pa=u(({MPBQHlza^~|96_g6U6qEk{*K6j*zlLIwG-+N at x2M7OP
z9iFTEwE7|)n%U)sYSD~`*hY2<c0Ydn*oP`6Zj`PB8R+Thp at cu|Ka(vV^gcpjXT2wU
zaE3qK+9ha<kyEyYazR3oSquJfLfD3fUm}BR7%BoHP)Rc7RaKWNLe$L7&0CY8j^$2&
z3eivAzI(@~tbOWeZ?90P+o8e3A;o99+S(o`B-{`HS`5u{iHi!yA0eCs=<*B$?3~TT
zi;=C<dcHG%>6tRHf`VIynt!LHh(a4cNTBNc&AaLsVZBeEJ_Xrg%lyhAW*qI>wQF2P
z8So1nkc=2H743Y~An1Pg3q9qmZC<?t1$Ub?q8b05dZYJz7e_F}U=*377$v5IVK#H1
z{s1XD)7D5dAt})RIO~sCSyg at XJG6XtEi*?+NvWu)sLYXCdL<ctRPIKQn_J%Aw$Hx6
zL2rPntMa;KBD$3HMsX{Bruw*cAaUwCI}=Dv&yQX3Tg_}MG<>Yqj}u9qrapjYfwjH@
zE#|jE|0MWMx5#?F*Us$1UAKh at I6Y9fe?dk)NQk+iA}!>;(0(P>P10_FIEYg9w2sfd
zZzZWSGc(VhD+>5ej$Kp<ng3Pr0FTEbkw{lp*EIPECMZ*tYey<Tr7a`2hr=Xd?4Oh!
z{ow~~_ue11JQSnHWnq{s-3K3Vl&)F-faTQh@&|6)*t}_omZ6DelC6NXIZ at 6@J at k)@
z0Nz(jn<y+ilh%>DP~6_xX#>@zI^V})tA(V?C|$_H$EL>zfa$rj<Qap5Qo#o?l_Oi;
zyie7hwq$CJHPL6>n_{xn_A{Y=F<9e-nwlrbQ}i+jmX1`Is#A8I$@?(d$etH^eshDT
z1 at B6^2Tod+s~0DdWNEq&rXC4(N*i~+9X=@9>IE at UGCj#=vnMnP8bniZbVj}ZZ2yLk
zt8XWoX-lTF8cMkXc}VV-5^2QC#KeRSP4F6T5QE*xHw^8jcq;%DiyA at KaQ(JjVC_k+
zTy0Ly at 3M!;b9(_{J?X{i`hg2iRZT}>mBq!KIMI;<2M%nJTK-Z{ZHYhp`lKu^XpI#}
z-CQ6OEr4=5GqgJD!WWpNMSv;P9ZQRr%`^&c$N-A5Cwb$SN-llDro~CKk$vphQzT}|
z6&h&6h8I^lCmJK~y110ysm<}Q3l6S5awgChGA~#U+Yzq?geMG=e8xY1G(!$#WP;57
zR1Y8oO%@1O&=>?PO*8_o2QG~11uZ#UyY^K0Jov+-J&n=;R-#LDEQb*8K*<8#&FxAz
z%F>5 at W%bLKt*xK2ys4q<%iH2j9n9z-;$tzT+_*y;VN;KPR`E{&YzNFBKbXGs#6Gci
zPF-Scaop(GvBoj}k?3qhD_vaDHhDi at NvGQ&x at z0V6|M&fAhUp?dE2LTbVvmSX2>Ja
z*X- at dpnt`3>DU!CV6{)fIva00dU(1usi&hu4cHeMPv{{5j|Q!$R1m$g2a%baEZAQZ
zmym#}_`}@WTV2N{mX4Ck7DqSc5hb0Hg%!#DHzX&z{oq-Sq5S5H^J4fia6b;4y at 7Ye
z8Z(3-G%*0#Y>mkVLAO4=a{NgFS*lo!SM);bL$uR%+-`IHCn2{6s+yXbHWxYpkl~`q
zm^8<*+M=6<9vNM3YQOvfV7qtu@@1yasUqN>CBPTJ2E%sZlBB;=P`GyW>XLjoH`^1N
zcF~<jwT&z>ZN3;S<FU3K3*2^i_!gHXhYI;-_-N=?27tmNuycdWafbjI21Z9m$$^Ui
zH3ij6mIQ>MzCLp!<dyn)*Y*?;@fTy{c*E~r*Vk`NHOFDGScfuF;NmCo<{IdVfh}f$
zhBv~#4DJKk5ir=uw@=Kh!q!=kaKsuu8~cp^ol4 at kgvo@JGCYa)^FJR_%B9IqRhM|b
zLAIUe|CDIlt++ov;(w=kgpnJhH|w4Bzd7Li<EiJr7ytP*_}{wxhjrP6PFOt<Z=Yg@
Rf^$E_+~kUJ>F-Vt{|63m!jJ#}

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-02.png b/tests/reference/transform_and_scale-02.png
new file mode 100644
index 0000000000000000000000000000000000000000..a92cfcb031c7fefe4ea2fb33eec7bf9aa4148c27
GIT binary patch
literal 2731
zcmeHJX;hNw9#<J#T+5rIxuA}grKFZ37T}hnb<3@;nPZ7HirvJetlR<fW;vxyLt1D`
zmgZ7f$|$Jenjmi6+z7>`F*OlETmXe|UccRQ&$*xPmwBFZ-uF4rd!BRN-}e7M*#Uk&
z+8Rb0Dk>`4Cr@~tQBhHK2i8kF)PSeb-v$A^wp~8u<E65>HJ{PTi7F}@;U~R3{*m-_
zk%z(%*T771+?Z+z=b)zd!;+7xniW at MgpjgO_XlW;E_LrBM);~{-wv*MZ3X6%-n}Nn
zo!8scJu*JH<9~%%Sm-pijrx{{-*fP4cX)W<Qf7k|LqJXt!&jZU$jOig?4u%1kaVF~
zGXGm5mMuyy9(EMZ*npm~;6regsTQAByo1`df9-ZKe}GrL^qtlY%W!u?RZ#m5!(I6|
z7s}z1*9~yF*bSdL8ZSKz0=36Fg5V_q6*QVmN0eO^@4_1zavDm_*gTu5K?6o(<HpuL
zpMO=25%77J(Jt>+{5ua*Pu(-2p<~VI at -)}UyJlDy%qIsJEqP at Yg<X&2(XPe47iSqa
zq^&PUk<;@}?>B&)Us at gXe;Y#C|L{a<OaBXkYhwgUPb%wrXxZ1-N2k+uU1i~cfgg$f
zuE|QpdX6z{B7Xb8<UZ2rdMXvS(gzzKAJ1?P?|yW!E!@F&!Hq0!%>V%>(ULAp!uxNM
zu}X1nZtmOWjc$?D9 at Wg77DvqbgLr#MTC(muTPPHYKKIj4$0ED;I2s!oR#a5bZp;sS
z{rCcvx(Fq+qtKJMO?qhH<NSQa<(lDF!OY7wtDK$NGEe10vYFGOX1Q>-uW*o at vNjz2
zs;Y|Dq!?DLuUu>`_b1!g+D6C3_~Po{y^CKMdE*$>f5Q!oNP1UaKhpa?O!S3CJUeY_
zY6|>-E at H_&GIF2lH25(KAJzYqL?jM!I0o5X7g~J?VET>u-$($AI3~f2j7Y8}{rJOf
z$DW>^)LBy0A7a{=v!Pah0kj8+Rfw5=7-p_%br?)seC%dbSy@?WX~a-Ppr~cDnY53{
z at -1}kyj=6o!Iyo-$g$r2z6B9zfV+gbeq^fTbt<>KIE63ZQsh$6=6pGMmQ9|Vm~h1^
zWUJ$TR(ksS`o6xtVfLCD_gE3F*cKe)!QRjDE_&HCh7K5U1>Mll07wPwAg7)`e}1VW
zt4s|$U-tN1^#zjh>RnwkXNp3hh<6d_q&GD-DzLa)w<KBG#=Q_Q0VnP>s5vjVV-O|-
zd~nvd8r3o}9Ew7<+?YQDqs2`&4-5<x7Z(>46ub$gzQnHAFu at A~0U}Md)L#TgCC}t(
zDWUi#^NxhvrVA!H-b7aEMa`to?RP4f;v}9acS6#>oGu-YLL1m!xaa*Mc8d@$mrI?n
zA)OX-Da>9*j<K|DyICm%l_u^4Y)T3_e!PQ>Q<98y?|7C3boBxllGm4KT2?|bN)mn4
zgaUzLjf0ZQ<u5)~a2C?%iV_iEcFFO(muo)F50<mZZgFV4!beqAHf-pY?iAQ$nj;)8
z=MTT??CiX6V6Xgq*K8XF1YjPjJd1Wtm0+k}{I1>oibNvk`io9!OV-wghlkhGngPoU
zaX6bD1YKU_UY#U>@uNqNvLcQc<zS`bi8w%SnRuF<F5v<xleOQ`1hh{eQbJWGH_8BU
ze at _%m9R8VMrI%d<PxLD~c9UBhIZvF^*4EOZO*U*Q<!@8FbF7H0=H}+1sXW`@m;U6i
zbLY_LXihaUQD|aaZEn?}D*uK}JVvdngPQ0Rh8)<_-Q8W_7?n$c!eHh0_(9l(x~oAV
zXixs3giN;Erh-MZUf}b=DPK#xeh35<Oj+ZHidvUGcK`;6MFaRa$Qf at 0*x%33 at 9Muz
z`J9oF*)LyKB@*oFM;}Y?2Qq7%>QrpEA~`s5&ti4kODyEz!E2d|i;K5js4v~yZK=kg
zsTH}K2LuLQ`{P44;A0Y3vN(3}I*gc?7j*vo6?9BYOr>K)ZfGjO<mmO at Cx<yP&|88}
z-Q9n8lrQ(#`#*INOWm9toQ{~i3*{+g(*%I9l at xlcQ2UN2m@o$v9BcpL-&-K~xGS5=
zZ$iCCq?wtS27L?;xA_JnNkZKJ{?HK$;EeSZwwr$r%*n~g*|~swTV1odP*DU>Q}Z*E
zF)gl(=ICrt)Q&@lj~|*)wS;^=UnsPLKziA17-i?*_J5h1Gjqc#(3(?OSy at 1J8AsY3
zIB>w;9z~74Xr*`1#>NH$5%Bq=^i(RTuMj4x4~_=XPQ`Gq&-RkaPCXWWs+rEVF8(SI
zU@(}|R(i?F$>g+UmNr%6JGHvHx;Xk;KAgGjL|58YN=IIYY}YY4v7ZQ7Px$m#&H?~+
zj2cHZK7{Xs0O6gfA*pA!EiW(gcs!+2$zXWH5*oDu5o4P`mOi<PjfJ-;+_$xnk&*nZ
z at jc8Hpgv}-UVqOX9;TzVwpQENnU<O6?l}u`rs&(ALr8fETlKWSC{09{@(u+EpKVOW
zk at MEXOta0kuq%#Zb<x32M#z-auRs()8Lg}HgZF>=WuP2IV4e*Mf;u=%P1s)a at bIwG
zTL((s*yyNT*!w4ih47pFp>T&M*h`hAr61;2e4jX2K>t`-ca9kaY#!#gBLDU at mqBMI
zEZE<^hN`4o9kx-L$<S4=UX9baX=OS>SD{jUtM6d~qNn0rdM#G_X!0Pu#o-EkVL^dx
z)Org1!NSR0;2c$=%IkTO at n6jm=xhJ0Z~pb^KW`C#vGIRlL#dumoS=9`BUr%gQ|083
LeqPm{;kW+;7#QMW

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-03.png b/tests/reference/transform_and_scale-03.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e483b39ee34911913c08c1e14e410fcec7c72f2
GIT binary patch
literal 1544
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(0|V<`
zPZ!6KiaBp at J9hN`mOuXS{mjEAf~QnWxw&8N&<>k4B}mLn%zWt$&1%i12c5W9Yfcl}
z7FJ~LbMs7Fuh7vp9i1FENlmW9FL!n?ueREGCjS57z26VN-dZ*9^Ph9Y^EOv}|5G>j
zc}d;xzbT9}kNtbg&G4_DsVxC3Iz7$q&yW7k|Id{E37BX0IQ=Of&%uAkWp`XPIorRl
zPk#C3mw#?gXRz<GHeiv~d=R(Zyr%wjiIuUj@!M}depFPiFixqe+GV>d_x85X)nRk3
z%inEgTzinSU)I{p&~Rhw>1pQq_ju}0eVB2$oqzZ7Pp73cAKbio^H+9L?c-y;tE>ti
zxm3S+e7s*feBGZ%yRGJ)+gttp-oD!EUteB^uaB!O^to&@*YEkGquug$H5Ff8TzqwP
zb@|&{rZx#TH|5XzbNGDjk_PkKTOpy-_2bvAVrJ+2Qnj~kzr97(+gn at 9l8cHqWzJfb
zsTZ at O;QPC~tFr!WDtmjYEcx%Rug%w2XZ`&2^zh-ZH4%lszr8&;vtQo+-uv(S#q9rB
z?K>>><Hg0rp<mzK-R(VHFEsSB3BR1pid8_TZDSS_6T4OU{?VgH-`?I{z3TEyoBDq>
zoyFgN|9#l`@$z#2)vx~j{r&b`pRDz&tfHc#FWv1Ki`n*6etvfJ=+Uy>y5G*sG;ZgU
zje4ZZ&CMOUHSuuU#*Itu_TGNWx9$4c=<v|<^K7%rpFe*dzpo}TG<;o*;q+(WW?2W`
z8vS^7cJ|wMSFT+7`T4oLeVxr7205RF$B!Rhy=t!6`LkzDeTzRlIJkc9PoNW;-$rlG
z3%xqew))oHWtnQ~>bvj0o2cx*Y}qomKU@>CuQZtF-H8ZQ_n$Xs#*7uKfRSOg=OEJ$
zV1ydK)hY*uQ|MP<aO?Bk-dUU;8oR%4 at 7=rG^W#I;Ms7~4 at cHeSetw?pM{S37?>}3A
z07mKhxV=%KK>KpzC3PCIGk9%mZT|v8VB^M(2mKw3i;LrJ9s<+EuDkDmg6zui`|JLG
zPuv^#es_$0%P&6e6X)k$j;h+e%5SdK*YA_hoIhXx?bHX6U)kz4pProD9<TnV#-@|?
zAPdjIeVJTuBVB*wzxuIW=ZR4(j--q=eUA!`h5&U#pq?qJpIg$u&QcRtv@>|R`njxg
HN at xNAZBwMe

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-04.png b/tests/reference/transform_and_scale-04.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7436fa9247f69377610463387243d13a12115da
GIT binary patch
literal 4353
zcmcIoXHXN`x=koSG!g|aNSA{~0i_rrQX&cxq=}*dm5vl?!Vw|#1VNB4VgW<5fC at q=
zQlx|^9fSx9p&6p|-VFhPyV3Jz&YAb-{<t&m%S`It-`@KxYptEA^XK$-?-bn$fk1Za
zpFLv=fk01z_wzeA!1JbwoF;gI*&FJefoyF*GOJ%EK_Gid_0OEX<d-`0)x}6~Y>2v$
zhPli|zWpfI at 6#WWxB`_I6`4J*RRwWfmprulI)$^9jX#@ZnFYA&y0no?3XvX0#-uOZ
zb)0qA-(u at paObH)_xLZpm5aI^PQr|`?6+zrBDgJ=udEY#=Ek~?6r+}^*iOE^Db5d~
zS{Zccy`;@SNeFRWk4miDvG3kKC?~&+?J0XM_}N$@G-|KXeq|2W0jFt#&&tz0gtIv3
zhpuZx0q1{=C=C25kjsO^RUePvl#N~_iwmz3;!(e6V*iud|L(`aP)y2GMOBh<Q%EdU
zc?cR5o@|?KOhP(nJ$(33`v>Rh4rQo04#(SzAVR-s{N4s~RAxDsObM8i5s7mu_HVi;
z4gF=p3YM!Qk8Q%mCFZZ#b8K#|&tVAO9v(A1QbAr!DpWcW7SyY=(VPAH^+b#!Wp!<e
zY;pB!z?;sgm8hsFgtroP|NK1)r$t^jCh$jHLxYop!}2Th3lDe&kkkETb6;LxL^vx^
zGrz5%3UYGZy?f{4;*yn>#TWU!vG2ljY at SU`$V^{JXlN)yl2>Wf56yh?<jL~#vQ8x5
zJDZ%5xw#DRIXzucNNBW684{LU#&N^l{o}`v10`<eZf<S~I9Qn7``g?iA|lW72RVWs
ztr9CMD_OH&EB%*7YqmBma5y?H`k7Ihx{8d<wQnEp1YopIb0Q2Js5v?5>OPazEQSVQ
zvnsH{&dzRPV&e7d*G|P(n5UsO$Ro_j$w_09s-vT0 at 5~R$+z392wFWWI7g<@{JUlV#
z;*hjgL^|1~CXh8-T3VVOh!(X8TBvU$p-qyNPB(=@%J~K6<0Ui#f}FaiRu&c(`b#}X
zn84C!hqdE5GI^AttXFh*)f)CFskym1EiEmQPr}vBZEAY@?bSRCWAp}yiFN}>qvQ7?
z*7_Bz;On_lt(2Y9f5zhk>#rYI7w20cXo|;0uFnxZ66fYy=D>Nb=9zg;ixA~QV!00>
zN8!_RbBYdH5ZD<bYT1pi{6$g_&OeaMy)xJxe=myB`t{Hm-#|k{Ln|vQ9UYy(z{+zk
zcfsLsUf!taXi-)7eRvrtqFo+Jr_;CQYY}Q{YQl=v)3dX_)*VkjPYCLEOszN-tEsB`
zPIP9;%F6EDyO*&K!j$3S8DKCdK2zOk8h8+&3LCSmoSfQk1-<TUHk+H9yT8nnus&1v
zxwEtU{ho5IKeQTERaF%%%e|($^Nt=p%Bl)7#dTHU=R$riG=d1VwY70XLRb0hpm;o9
z(T4JKy0<vphW+OA#3kIu3f;ygVB+8f8k#F8x`4Q~l(Chn=AAvpSP3ZZ6&Dmd?mOM1
ze64|tn;WeCZfkvVxH(A!KP#xhPsQKmEzinwT>mkXKgJ*uiC?~anVz1msHhM_-}njq
zmXwsBZw$Q3&24RI2^e{39sw75R(%E66&nj at u_2IU6C-LQLh6RAYp3<OC&yoxm;2Gu
zF@}$h at FEasQX4X<+2L49+vwf9cZY|Es{>g=f`VuC^xQ}Tlwb{cdBY}K$e=WmDRAiA
z_14-*1g*I_<(Q+v7728bq}t6opOdVi#)MrWaHd8bm!-9J{?V7&*;rj&|00}`k&%Hx
z^pC|4cXnyRI9K_Up*EGi#unBEwxMHU6_j3|Ll8}Aq%FNsQS(R7wRF#YA|kz0=OBLC
zMpRhXX^Yv}*&jhV^bCR(o`Wi2&k-`5sP}eca?+KCuDUgGzx1PVJ at r%+Z_i4Nnby|N
z;xVz=!I~O+8e~2^nK(2wR5J2hFG2Ez7d0u5Pg2uwx~I_kw;$_ at Td!4pifg}})z at b)
zwkm3<tFHwR^z<6dZGs=(zyA!gXmR0zu(jXmUnh66$4AyGd-S~pYb<4K$hDOJIrK=u
zYV9M67At~s>M5{OPs;~bL7`Ayy&7*ylzFUZ<NLKAWKYq$s)ug1X*A8ZY+yuHPn+#2
zyauYIPh=&7^Ki5^880+mCDjvr2o@%-p%J+7y*@bpJ~5QBqf*SJ<C(6Qs=F5<J|!o|
zxALn~aj&~-<=0tj^0UL>`|+37kl?*)GL6m|!P)dF6bgl at c}I6R<}pyd at I2up{|PuK
znbbrbGTpPcXauYZI-6A`S9|^V)gzCR4w-~3HXkzb;u(;7?`<y|eaw?l_0D at tNJz-Z
z*;!afsJpuxRJppA+SJM#lgS((AHP!UgaL;)(b_m}ZUaSpkS{hBg~MX%?F%obUhMJl
z at lhj~?%c6MiPQ!Q3%#hYKU{e1PWQyEfNBQqm$6a&kit5ys%wpW9%?EoT`Qf}Aq*KL
z6EvPnE2u+hTjn=r<>6lh_7~G6uVy4ZA(6zy#O6HvGc)%WhCyNI1t_T7{*6a4gpaRp
zv;<tKJPP4=Dya|Zw<m}Pc3^vI9U+{Lk55&!IxtEFa%dqd?PRbz5{X^C0WBAhDrk0C
zTv`&KSU_f1`Tjwh$kB|;`H15&ckk{gGJ&uTAej&4&H2VR+C at NnVv75r2<;x)S*?xb
z&tEI?=6P4UXcD@<l^Bq=t<8<c3RaWT)9~H9jSUO}K%c9*aI*AziWAd=7MojIS~4>;
zak*yIOYIu7h;<KF*8uj&W0TYq9YbvW_wU~i2D82vIkv8e9i(A70%S%7-2MIi9UTD<
z;b#W`@OlEk4Xk?aT9SXc at cZh*(5#78rT19-WLK`YxA&b`u6bE|j`rr}j&tpR9B3Gp
zWdhoLkg~Bn at j2Lo(bZMr)FztSCFh_-oZBPd6%s-zO-)T57z&j&CtJ5QHF<5UdMNEn
zO}PGP)AZuSq@*O7-y;jAo>w0gGE6A3D0O%7^rTxygoisgI|CZrnEzG_w%s>aTvQYe
zhs{gab5Oj;;!6jH%wD+B^EXz968a3o-WPZdQtD%b6GT<y)YSZk8shqLIy+6J!=OQt
z$;338g7;21{Fc?jl$74CuB>XycQ;1{-g%cirkz}WQ)+2rqxgFp^I)-(k%|g+`Us%y
z>xyyMp-8Ea9(qJxUfy4bqP4j?)VDa6L11)tKKncYYUbj_i&iG>t&bJw7NC`{U+Y_p
zD%jg*)>%e9ym#-ssp)sillWOnclT+)`2a8Tttx-e5 at Q<xiLUej?l-XT#fWhN2tj!P
z?DEAG=j4EfZf|eTCzJ6T6XPXxYm&N;Yr^hbyLOd0vSP}9!K(>o<qJs3x__;JiDsck
zf2kzl5^iO@<9T1J%jay~ZEy_#3V#a%R9AO~<$UaLG{1yIT2j(bNK&n5&Bo|j#u$(S
zQKE3BOgOiuecfFEsf4wOm)9EORZ@(w&pRBB#Ytk;^2!);hYyeYq_==cX6vz-o5M}I
zF+#uQooP1^*|X<fdOF3fHX_%Y40;#_g8?As=HgmjbHd?<zJEuaOC1kVv-=SKR3~z$
zIGnkw&P0A{Y)n`}BA8YN1mSGu+)gcZ=EdYaocEHGQ3X>6+eoS&H#d}~*9x>*hAKei
z97CZ>9s?osi}#gLH_JDd*rRQvr%#{u8PZ2$gcai at F?~L@^5*%mQd%LW*6GSJJo8%C
zgq>G(bizvA%lfN>Pf%aZOZ+bZ8?~i)3y&|G0w*I+PNe~6ILRz8FQ=sY4O3cz)A5jW
z(7;ni)Y8cuUQ++lzESKQGyhRR>|K&bwh1E=?j)n;0UHYl2#kG95s;G70+FMH at WA#z
zN+!|(`_B%%1A0wbC!(&telKd?>uyG3tv;E)D>g+$jcDyJZ)=W_L_s;L`2`9xGBVnn
zrrh#!*JDzMq1I8n<=NSztU&^RIz>6ToSYm02Ft at +owLf7S|KA_Sbgd#&pNI*h5a-5
zIR=KX8Fc!W0fh-V?(2=3v55BM^?(NSw)Y_P{r9#z`1sPb2%A6IOE}!j<RtJYr=ZXd
zyelYBg4j2Kwje8Oh{u<fs&1nqM)90{?&0W~nk~@tFHJHipyNqxzCfYezkk28vvYBA
z5opA<wKYlrjLA!;?b_Hb_xbsG_R?5_2nq?v5AgHBg9q#D>y28V186eOn;cglwe<Cy
zQ&7%eI>4~278V$`8JwA3#SePK!^2~YmO*Q6ZEb5iDl7XZwx7QKFI{EPH~>M6eQ>3_
zyt^*ry5i&Gi;9Y>s;W at V?SjI>Xf&E7l?P6 at dv}_Oo0+MpskXK at 83E<_giwag^%TmW
z(Pae%pV-eY5E at aUQo+j|V09$e7ZM3XOY=tJ9f&5tWxyFLB`yBh5-P4=KBk~RHj|Q*
zPdK&+7WW<*E+-}|wcu at aFGTDXQ}tgQ2K56d`eU-P3=-MkuF4`bA18(`wp52iKMRkD
zh=`2T!(y>#&V+}D?~B7ua)&Rqi1d8(0`dx&xTfEEGM!|Uot&Hu2B>+DUOw{Z)2H)c
z at 0oE!92Be(6=V=#^~lJ`Y?<;2@%a4w{ODf>C}N$>HcmaE3`|zmW%Of;w6t^`d;o2S
zMuCA14GkYYd>9xQ0I>n^^}M*aID;i0ZLdl?Wc=hsy=K7jIK_U{36^Podk%ZEsDGx+
zb5P;%VXp?uD_45ARA}wVFO5<_{5t7kmNxuK%;ASbE1>?tfqwq{xm^N4!DnYTxR(6z
zDJzIXh3o-CR@|QMhUxhEtw#S#-t5g~yW(C^QBjasU~-^nb8~ZZa^9HbmNi1)W(d!g
zvyrtO9UT{Jwv8~-@^EVV5)lG)2<9ym5|)6cQB_GZpzYhm)?%Wgfrq~S{`Hz}e&QGx
z&zrUn7cO0T(e}Zv<mw!I<jMuXq~-&@;Bs{c$!uuAj%i*70ymu&HWI5UCudOEp!1i&
zY-&1-aDH|Rs}b_k&-pDcFK=REB6g^jw2y0_QQd>j3<iUC_2|`@`uh(aI22xPh!xR!
zOAT8x(`~=r7$^2JSW{BN_eckaebf<ym~Q*R6Izl2N0~VL$>{j_?vs)UV(9qmp^-X9
zE-ET2;Oc36%Fj>n?}Fq1zE1!5_ukVN1Qp{rsliP6KZHiMk>!ug8Vn4=iu(V%cW?g@
e at VA|>D^@fPrZ;_up9TMEK=gIboypg>z5Q=cL0BOG

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-05.png b/tests/reference/transform_and_scale-05.png
new file mode 100644
index 0000000000000000000000000000000000000000..82e2b398f342cf2db10ad3d2dbf4d6c9fbfc654b
GIT binary patch
literal 2918
zcmeHJdsI^S7C!jS7uJlWhL1aCrH+rAmNlS~S(ce5np!@q$$X$tK0qZ=Tj`XQ)hIav
z(hHrmG*j|{3TDZqsX3&gLTZko5ttZ05bz#bciq44n*Z-w_d92u at 2uZid!4<$efGEa
zm1BP12D)at000;qKIDZ000<I%|DvM?K2`p<2#~Z+AMy4AR at bh(trfolfZpcAUi*UZ
z6tRHl`%Y%bo?FbHbVB_8^r+d1+^M`|KPo53=Dnt&u)OXhF;?|Q(}5mV{JP)vYK5)$
z9lbi}!FcmBzN+c at hnkb3KcHBnw>!6<ExT=O*Q^<HS{JvdoUGg1)>)WIRPdXI76=L)
zt*^aRl`d8B&&|TGz2F$`0Cv&^5(vQaW at krh=<6K(Z$xsRpK+!Qz-2z at Wi=Q_S6^p$
zw=Q~aMVW(Szt_{a)IK;Eoavz#9kWgorlS#`kRWbFCMMcL)DOR~cCj*nsOPSC`dbS1
z%)Ga~fHOIVCwvr|<ef6f6Wju}`oPEc=Np>;loI<<7<Byj at sN;F^L5Dk_39RzHy3#Q
zQ0LB(AOM$G?Uq#0ps`)Buls3}PRicoEcr}DUS8hB#3^Bnx|5zbTkjjTTbi1g{e=HA
zUVDafzyEhsmq?a0{OnaN1mZhOl6V$gzdkTDv}xnUwpG<ie{4#7uBLaPg~4S{yO8RX
zcz3}0ZDfvpZRlsNzsJQH`W=Vx#=AvQJYr=*JlcSX3JxYcn1qyEp=L9in<McPnp~G+
zl*63_&JFXL7HL<mrXHotfc;~=de&^~qOG0Xnc5Om*X*LDJAo&XZ9C-z)Nu`$?nGtP
ze(LF40|t$5$&h_I8U`;TNMD1WfbZUt9mgX;9~YUy)<BU41q9p at N9kFeAA!__HAu$W
zFa1Z5 at ZdF&t_1+o&xq at u6q#9CTAG<PUzobenS9;doy-*YUDvc)zuWZ!1&&J+_EP7C
zeU3YJgf^$d?c296DM=y`F#Bj8v!4k-O!W5g>S~9Yp-jcnTz`LnNR^DRurxJY9=`-_
ziNyH(7jpNjm6R at 6e|`D#WiJ)(7|~orB0bMi%0GPgz?3wL{-htdcWhcz!?G|n9j-m&
z9Ti3Ep7QBz1h#Pvc`iLUIgmTuvR9j;(EP^p(nll`$v*5kSj0}3qpY!6{!O5~{Ng&L
za&gR#Zfk3sR2gE!h~t(^r5ETy7);HU4oJywY3x<Sd?6}+;>G2_GElw{pNKZX@?g2z
zO(Su(u!mex^hqQlOVLCk3uU`~yKo~%?WT at 6`=UDy)#cLTI!55iHCWbW*LUyQ#b7XO
z=vNC0%wg-<DfO7s>8<Z?- at bip$5(!GU#n~|%-Y&|Fk-s5w>MeXYeV<(@!{ziJj_dD
z=beIiWVN)kD1<bkVSdL17B3yn&CP{+C~nRcX`(uM58lwWBs^_sXecj_8Gd#a$3LIn
zJ=OK*O?Vq2Jt86kgPFa5pa4eOz%D{dE|<AtBEiGNL@}tTOf=-YbLXF2?g at O(_uR-F
zGMVg(=6zWh#n{pHJFrZFMIlF=7U+00W5f=-2d0vCJ8p7}q+E*wVkc;1NbWEJ3e&wD
znYBDM(@QEYK9Ok)*;?F_otcplv&6eQD&7`trHR&}l$E)k>!r-}#{B#<kE)%mMTUd~
z2ZM?n#gX8DBI9}bJSTnkXHb3`|FV__n8u<+u=4Ude^3`USM$QP&PCW?XXzk6#V+n9
zsuXg$94uv3NX<#_P7Ws_KHef@`rgVcYxPk at nS8#_gKDvX{jNS_oLk{fRLpU<`%&;9
zIXgQSqXq^BFfDU=sSCW?GZWaQQ4H&>jTQ<CcNT3~Nf>-wTYaCnG@&g@`&xOtYC$3(
zmzBLA9E@?(Mm~$HVRv+N_&nO2c`xdsY#{VU5}CX*5E3=@*I!;g-12u{e#m4p>+9c5
z9EK?J)7Znq!#<C|1pIw{Q&LhWd(L~>fF^VHB9z4VF)WIpZ8iK^f%BvXg at uJ>Wo2#M
zaOKtM^z`&T#Qe3?wCHH$96b$L8Ozd+Y`QR2=9XE6Vks9!83{u>ot+CU+)9g!=|yJd
z=8X5s>d at L3bNe8QJ5*}uY|DJFTqZio1sRSLk1&3Iy+MQz2^s2udQhm;)(ly^cfN+x
zE;xi4UY$7l9K6Nllg8iR=c{S;kC8iXy>Gy5?ClwCC~unq-Wu>qd8+7CU|?We+{~>l
z-W1AuwoAQw8-DJ7T<Io<@TV4%F&1%ErF2zuC#qV&Gsno33kLyiH0%3st~{(jV9%Ws
zCe*a1O- at X7<UetoUXn0pDZl9<)zDh#((<@cSBt at cfxRwJz+ePYL8sFz`lNw`@7EnN
z5NAVSdyYj!xOF>HpJ0I-Zym(%9tGBhqL-ypNeysQb;u#g0z(4!MPyJ=5t+<PpZ_=%
zMQmj<GYJHQ>93HIV(RLetC^a{eM5i`Sgyw>>b4o_EGe^sW2}nn)vGHjZ5<sk-vGVr
z2^M+v`tq`n=4fYk<V8K8DokU84H>~q0|iYeM)k+KzzlIIDfJBvI2?}VmN|GeeW3EV
zhW<mgy}%)@DZF5#J!pnq)6>(SdSJ=qD=U+8je%=sLd|~AA4?<>olF!T$r!&fgy|Kp
z$CG)d__(o)Su7gVSnbh0b8K>Qa%!p!{GF5BT=chqsR^1>3lY*^#%7~h at c(4)$u8<Q
z+ygTVlf|4n=OLed;P0XQ`e~qQxCz4FI8rsG4n<%W1voppLsT1|&j)8F$syw8i4)8H
z-j+(asHO#?g*pr$cgtJ=o5GSxr5YF*Y~GFjqpQoz!~_pUHekluuoEw=kB|^6pX&qy
z!Rr!Z_R-Jba<F}u2=27L#SaCJDzM+&+}zrupH@|gIF>}1iOHVKh0m>v??ti<a~c?s
zG?N#IuqgEUVgLU9M5Sy96l9FJ+GFi<(`Ur)%hD1aG;79pRSzDV!D6u&>MaT at 8XHS$
ziZxOD;p5<hEiEm5?G48F3F{U-HyIoEP~k&ObHE!f_;{>K<=S*SaNs}=(#lB3$R5iC
z=k)o>PNdcN{PHgw8^!hN4h{}}oiG3$J-X#@mxF)r4{JNZrS|B=#3!wrbhIulWErs^
zZ_sT7Et|pEHT(d0`wHAON&=R6Iiqgs068=V(yn7-bS?Y;^gk<sN;_a~x~|9OkT1A6
O1BVazc~yHx=l%;aW>9?q

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-06.png b/tests/reference/transform_and_scale-06.png
new file mode 100644
index 0000000000000000000000000000000000000000..286366edfc284e0bbf3d2694a10eda019b2f3d58
GIT binary patch
literal 1632
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(P(akv
z#WAE}&fB~886uf7#~;p23D#&@v?w7_QR;H0x{$yY;Y%wNZbaVbXl>0bieR<X`4b%7
zv9)zshl}=XlO_S3{w<0L3m0YRh&_(k7~^Mi?#=AecYd`#U#T|R{?9Ca<KO3YPp*1%
zCSP<yX2u0(25I#K4mE7(+RvZc|Ihfj_r>{}*IEBBFJ*d{IcwQ``PHv~?dN5lQpm}B
zkc9^e`gQBX#n1V_O at 7^Z#+b9KsX;$(&yVlxORau?dpmpHynBB-8}^B^{Q2<k at Ycud
z{Bkk7N>;8~b at AfGv+`Uo{2dS2zQ4c!{?_d9(9pw&56ADX%S}{S5TD9eZZ-Gn)vK#k
z-P>1t`?Q3_f=8}vPM$pZ_;|m4)t8Lix35l3)n41fwr2Scp<mzL-nQSPlprysso}0(
zQ~X&svmzZG9h<s8KY+?-+wlf0c_Z}eNT=}U&!6w_|Mc*1``g>w^Iv&5?B_anV7^`L
ztoifr?<#%$=~L16+jHm6UArplc%SUrvutY?Kj5*kvx^J8dg_$d`_rABoy#(9*tywO
zJmA^0W5<nqG6&d1SZaQLdMY1R`RU2YWqiz2G&z3U+glwPdbQNn#KgqNDCqjvoyE`F
z+S{XN^G3Me%w3Xye;+SDzq#+_+pM;Bc6rt&JOMz_UF$@-_xCj!7sOt_Hs|5=M-#0C
z*8Dik^WTQ^wlZ&Xkjw|5p|@u+-)MN$aDPwb<zqmbEBJX1axvx2dUkhrd3Jo<j)I3*
zRtD?#uzXqlK<L-Av$L<SkAJTl$;-?8mG9NAZ5^!5K?Q94N?(V)Psq$%nK?^bKh8s(
zZMDLKjT<-KJNWPK at 71fUDnF%Y3p3VgbNslvI{a$<_r~h{wz-Xo8%~8SoV~2_=cm-m
zCf4Qe)~tH<?(S~$ygM1`1_`ySjQ+kLAZuN==JwmN-FH{5S{J+f+t1I>uca|x3+$i!
z^R4>*f633jzgqA8^xo0Ww~|Z#?c|ER{`!w;Lh;QLj0d~62fe$u_jfyULO>UD-0hyP
zf7j_GDE!G5<p}%c(wBRCn{EBSJ$o}7lvo-2dwSNaSu at A3cGveDS;NBzL|N{<Et|b8
zb5>enVq#8Cj_$K>ZOnCf%G)RQ$=O!@`}5Opc?BcSjTlzO`#X!5Uw-*T?v0(T?cVhB
z^MHX9eY1&Ci=(2bsHn8Gw4~(A&CTh)mv!{@<t>Yr>^<2~I at NY!a#>kfW at cutZ1(AC
zy2i%FZ+Y4O#N4cY089w_@%z3^+ceLv*2>DN>f4)})6|%+g>DnLYI64P at 9*p5_TKt!
zB4iN3%2;22`~@)G7Z(?^^T}j at 5;iNNyj4j?Uf#P02b<seGK*+(R1_9&+-upu`=JtR
zmb_k at F#lG2{A6PTme2b|6lMTv;ZZaKLg2TsLxakdEoUpY0jmrKPgg&ebxsLQ02Ezc
Ab^rhX

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-07.png b/tests/reference/transform_and_scale-07.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6d35268bbab1f667094aeb2d3f2dce841b4a41b
GIT binary patch
literal 4097
zcmeHKXH=6}8V-seAWa?0h%mDVjDkTrh7xCKqf&-J2t}G8ok;HxL>VlU89}KDgGw{>
z7D^x#A%-F)K$H#<kRXNtArJ}K%kHl|XZP>^+M9E}n{&SJyZ61%`##U}evf~(G!qv5
zUJwF-2w(rj_%{fI=NkCGdGZ*z9$H<}2NU0&n`Xuk?$PhB_R>rUM6~I;@z1xS3N~g@
z=C<K-os3Xa5YPQjcZ5iC=H7yQ{i-KadV`8{rveUrqzA8(8~a;UG=HMpIE!{_8Fy^H
zJrI&*qa0Q~pzx%`%h&I3Yhstr7+V`11h>F3 at b{SQxHd^B;#zwlhP9p%L1)Z_it6L{
zG4!jeTREo{CHx?s>htvTkdXx5QzuP36W#vfWXI*kg={~It(V&)baPPXWN|66)I^@H
zlmD8gbRRGGQW-PFoK8YM$+LC7ZIk}?<bPQ&0)9LKhCa?OqRAn@`%~T-ittx;Xpd>E
z^@@txYxJia1Q5#0eK~CA{{B9RL>e6(wZm#@YVH)J$oBX5=V^Gqe~;FiMMfsJO^u9*
zNl19%!&zTv&x at pRvo&>e?#<z&**k0CMd!ANMthaT#l_m%+K(SU)_V`n)wuUC*C}bw
zg#-o7c{aBdbTl=MO-<h at 6NyAzb0#!fSzg}ASp)1fn5)5)pe%Ol>lf4XShrz}!8sjd
zf%@GWX4*?(F!<iWgQcaVo7vFv0T6xs(cs)a&Tm)g_&g`4Ic|Te)`J)kknL3CPpJa?
zau2`JY28jZ<ZNsB`cm)HZ!Eg%#fy*A)1enH=ITd>l;Wvf5BNdg<<OR(#lPFy+J=PG
zQSz8fCV{h?-}<_xC7M3h9uH2HWzf}rHY{ZXiHlwAPPVYH*qG}Eh+(2va-+9bq9 at it
z5(;#K?{q&DNKQ_^FWP(m13r2?N6iCIV}>(n6WSDk+tJZ26vSc}O!?BKILZNoD0gqZ
zqY}!9(qCR)MmH)oXD313EXbB<SYr&6w%fkDyD^=qXfajmVU`#f-+H^M_-1y;_ItgJ
zSUuO(;X>3}aW-DCWqJn5!WhKjC1Uh30QdbWygvmxf6vmyB$>R1zuA`3ru12)NXue7
zN`D|*b$DRl>C>leWD3-&DPZ+In)d9`qepl=e)N?Yi#9Q^7G`H_8_%3T%*V6PYA(_G
z7=ZT7%uGQ+K|1|FsW2{Nf9o#Q7vL!<C>RnNDi^hIUl~z#%g*lWJOQ;nSqYZ3QO<*-
z4!?Y?kH at V9>DJZNRo!k`;#yR at w8wmUC(fxQc?t>$jCvEk?QVqX%4p{g*^`$;q{~wt
zKGa29#_PPnV!3-%(e#(S0)2^E7Hwf`zgb(4qSJehj?Cq-Ca%avfBF+F%X6Gh>ZZDe
z#`gBMPT*8lc6KDSPdMH^G;}-vUWbE=3$oT8RyU2rIi258kr*f~On at P0bUm({nwq+}
z%)PP2Ub=MY#*G`@-Q7FO5pA<b+&ARNVo=UdpqxVa8Mpi)ZO?aNoQ0OArlz{Okj;gz
zzP#}8 at aNB;v#D?2zJ+rS>WhkgCO53CtUP%lcuYd+kw{UgCEBm?kS^Ij)##rgYY=1R
zWRF9lW1ea2>&Nx{F6`I-`zj_DNqVM0GxHRY(cRo0hR^T2a34%>R8>}LVH_(bD=Jjx
zC(ISen~Ob^N+%Y3y*hI9d^nA_Ig&mnEiKLV2**#9pILZ#G<Z2`WVfQEpBBc)$FFB9
zN?YBVZMFUNSFyb{1>Cf=on46t!KTFAnqN+}-fQSLewkA8{swM-?r1}jr#hc)d_KRZ
z><%G;f8KgK7ov3G!t0U}n$s?t4|`_e=LdYkGP)ysN+n&VPgr;AAZP3we5`NX%BuAQ
zS(|PO6xv))OG_ghvayWu0BtNmBrZ86B|{GG;#>!6S_G5cWUoR?q=&S44dyU<MB!nc
z`GLPFb>@`_%j)Z1yhzFsDl at 8r{g6Mjl9iR!(4a|8_I_V*HS+6>^Q>)H>w;jjD<Pq}
zeK$`H+H$)pDJcmu{MinH!1 at D>#>a1QRY`+`w}_oKrI!0GDHpCCozuG#q{qr||5Jl6
z`OTX*u;%5-vNLX(q$~`^(5*A^-Me4nNxe at c)36<ljg3lHm~lB!aIgP4q{`P359ni-
zOHhHAiOj-oz-Q){k7WC(FCS_F#rd|jT3cb^2dSy4ahqNI9Kvgm4ZnbFRoAb3%Y_1G
z6!n?oHnh{(1C0qBHdt`A5Ow&W)}yk$rlX^yNg+`7EC?ij=*6FZip$Dko;`c18Vp1C
zm9<6EU8r*vhn#Q3zCJ|-h48g86W6h+yGp$EKM2}q5Ro__LDQxP*^JV%vUkl_sNQ2A
z#>Zb<Cd$jpPwS)3efM24a%3ao+-mXk(4E=}SAwCA4#gjVwp`72O~`%mLfd~*h4Z$$
ze=+ESk`i(MQAP#}B~0=^HdAU<_;t1oKrb$DDkU^9Fu<gzGOm#u7JE{hDkp&)fb2{A
zgGaJ`YgB$dTf=yjSy)(z!5~!#L5tmWcL#QeKmPb54|2osP+YNXwj*%5DRMrZA~kc$
zvNUukPb)V!7aeZAp~WK$3oA=dgoEAvzpt3fxvQRwiCPk{AP;(ldU=&Fwt$@!7{oT&
zM4V!oik%2JDInm`6p$NyokV5C?TnhSol|I6T~wW0!>nHg1_T6bFVxr8TAy!VS_y^u
zP`Jt$E_|xQ&B20~-U7=oGBRpEWbUkysl*Hfo#mrbEwBkJXNL%A)2F#NR(um^I~&DR
zIMSQY4>j(6tTf*m-7cw`5?^_<bfDZX89Qv|x{xGvCrV#jT)a}a5||fFE!4)wCO^4A
zFVZqiUs177rzssE=?W-SZd2+K&$O*}6$XGpFI}STIe|Ps?Ntx^{3|CIa3w}-Z=}e`
zEM3MIiJZ(nC8K*qTiXt$4{lSNf5&z$@%nZuW|o88N*QTdOoOrokaKuvaQ9r9m at c3z
zJt?B!P}!VsEUbJGA%QclcO7;Uh^SrF?dXF&MnQp$$Etzsu%v68yLn5Xwo_nWC6Tx>
zjcW^EpPYKpuGksTW}v2KjjBLhAxBjkrHF9022 at RH@}{X*L~5u at OXKT{w}oFQ{BnF!
zvl7KUtj2FWVVt3d!RDi=!W^TP%T;oq!V<#XZ$#XiY9I~o0+VzAssbhT_X~dN=-pkL
z#?f`=<H%Tqst0KTi@;*BdUY1n0zok`tueesc1L1QHPmPfv>;d5VbzfSd3H87J(~7^
zEC}0^8}_$XS)WIHqGEuuUUq6~n9S+DBMpo`FVfeyoWk#FD~CD=wy;QJZvldZbz9=9
zfT8zIoVOtB%UYQkYL)ND@#*U6IdQhgV`Hrm8*ku-pb!{TB9rLu?hbkmS_HnN>vF<L
z at ve(y$I~A_c4!VNV$=hrM^xQjTZO2?;jRX>j$mrvCsL-9%(6C+ID7jtS$Jt_DK2V0
zMDG>?LH|(O!@~U0*JsLv)sQ@&Jbt|P?i}!j`j20p-!(RVsMesZt&K5^cSIFrWqk at y
z*4NM=OJQ^Q22Q^&G*ve*G;DwU`mOH4HtLlLXd+ezbL%}xr(X?%P6|l2w1!uztU;^y
zFh(SW3SuZOE(UFit(B`o<s{IlbMUty&~hx+1{b$6rPUb0 at p$Y)X^7eRTr|(mo{Oc&
z?=7YT2ZQ+2V!zZ9`A$iRiHlo1JGaN}hlCHJz)dQZ$|O>%T at l>w^sdFAh6w1a|1lW}
ziIO?Va^F0XXFurg=q3~1<LnUTh+}q6jt_2neSMu-%AQzg3x+|^&<|X*x{m>%*E+A^
zWuB;WRYF4I>s-4NhXk4`0;0mc_D=7UNtZk7xhunkaKG`NJV?O!R)_LeSDm4*9Tjuj
zzmzXuM#IAW069TciPZh|Y67raFdSpaxf<Tzd(TR!y5Pgs#<U5r=M-LDH8nLDY|8(9
zyDihnTRVS3pa!a`scB#^+q{7<`R4$>5ZM54R!w4yIqLY0mw6Y)Yj-{eO~MwF;+i3I
zRlW1v)j_ZAq!U6CmmS9)bP}>&ykO7yEU$xZi at xA30C+)julZ3yp?BS*4^&Er#tG)J
zy1ofFYhK;}^;{5+3?Tmk8$>dVyQd0;A{p{qG%vaMol#JxXC);gmq at FhKl^a30-KtW
zJ_ca4105Y4a_RAok;Z69>~}sVMMYWt;YU?%iLbA(pO{9pTyzxV;qlLV at y8#VfP(yn
zzf1)*f%t&-?bZ()#xi;(C*aD{?XfKPp5KSidMto093+}-1)ptcV|NRw%D at v2Kucg^
zV&XwePs_;2NKI|9R{{K%m-qNO(*o!0kb&tS3*?Y;)dDpWe&^LaAJP3>5UH9L=hW^P
zKP6O-jg5`B%}CuZzM^2Rva>y`q@!wGxWyGs-DR+s*SV!4_cPUw9rqFEIi4hb<p-&M
zn?9gth2rJ7BWEG5ssHwoGTE0R4dK-=b-Q-u7$2|v|EK>$@V}{o8ZPA7 at LxYT)x8V@
Q-}I2{CYHuke|Jmz2Sulj^8f$<

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-08.png b/tests/reference/transform_and_scale-08.png
new file mode 100644
index 0000000000000000000000000000000000000000..50cd2a0220f166312505b30f314d11ac82ea6301
GIT binary patch
literal 2717
zcmeHJYgCfi8iveE7oya(bd;trD=%2;(Y%qVshKhdYaBDwbcC$DWkyPX=9n>NPMKq3
z(v*1{Qz|q?z`USTCgv^0xOhp;K}97+(ByobA7`Ck=kNJ5`&(;&-`d~W>)r43ywCG)
z$`1kFkc~zgK_C#s*T)kL0)dYJ-*Y<afO!pdzy)||MfiDpg4ExhKR9K%Akap%uc!OT
zs}E*`n2Y-3ro4IeyI62V|Me#a at B3``afdJLz3lE+f{wHCH(NZ`G_3jk9gv}yQTa<<
z4ayPfR-0|N_LkbUZ-VZQxb9O|TS+YDuD at 5a%M%PX8!xenj>dDY-X<*Fi!?JeP&rSo
zFo)daFM9nOof)<assFw+IFOwZPtX9Z64!6m*%N+b2Uw#;XUEoKO{q5Pw0_xUv+GtW
z_-u2UIZVxKcV?KVHR{VCcvC|7k- at O(v?6BW<iy0p-ekX%8LcB!DwW0AzKl%r0|TqS
z=jWRP>v{S4dN#8LTONVW0s&Yh9-l+>v)cX<Cl>biM`1NJH3Q26vQa}E0zM=pBp`s#
zPL_|R6N$v6q$DdVtAT2a at xci0(_jYe+JbMFTvfGHNpDoCr1Z?qJJD$L=!!apM>$q}
z$L9%?$t*68<lfvCSbAbZ#?iDR!(SB=^;FqI-GSkiwT2|=^=9%KBXf(%pH)@%jMddu
z0RzWs22M|0St<zLr=K#*oQxgoSO at Q#fiBlcNVbeFq?+B>=(bg--uKk0Q!5G?!pbUJ
z``Yr{h*y?@36kWJ01*fTEWC{LrQ2Ii8*1WIlQ7oa*Vk8jVW3@`{B?1lrKQCOe%BG_
z?%qsuCAcjQr#Cb-aOcBqmWM9T+cc`n%j2tPjtRR>=Lj;6VwNSN3V{4|b{vSsHBqRA
zg%%bTVI<|a+HsKwBR at crNdy8*wvwEjTu at LTA*+dS-3mILyd=PdoIc&t+p8T)PDn_A
z>u%6WN3iEwG at vf;hlY$Op4Au at 7VG8Z)mw(bGwki{iSkYd$|iArLTi*PIn>|Z-_B@}
zh&0H`Xg%8{k9hu*hlfW{(7 at bCYg}t32p)`H$AA60{_1>0bo5k9#wOsT;zHcuv$N at y
zie3~F^DI2gSokvL<DaK01B#q#V?Mrg5MPZ<UGy&QPS=J~1uvpHu1pV(Xd%KHg at c3V
zuogkpx4M|oy`>~DSs}vD%*<3&RLo+EtE#LlETq!{Modf$kY5lzlyi9s9T?avWG1Rv
z1E6}nyO(q;pFDwY)p>9 at 5!>;*l>>?c050YbIxP_hL at 2$0qx!3ItUcS7fpSyA4YDB5
zNL}(95MwMB0)YT=Vr^VqU6DvNqOKFO at aFAXs#DT=OM^u6hYuf)6?ebMHAhkH_ParC
zmd(tDDSGDC!7sS)US1Sjns`@03hXL!#w!=1Y&-b;fbXE|*D<i2hZw+4u~-cLAWIhe
zAvix{Godhm&(RN6A<j-tqk)8!6sNWKB9SOg5bt;qYm0q%|6t^ef>S|3JZ&8R!IYNh
zVbgH_y;K&9B}tK1)zsAR`TU+9w5^{@olqc{y7EjRA(LNeihNMtMpqMR9w>bPm?6d2
zO@`L`hK9JPD57#aKNbzpI|LJ7lXr4UMq#PAE?QA;ZX~w0wwA-;#O4<k7D~l|M#jb>
z=H>9;{Ejz0|LNkF&)sHbX4oHtg9Sq2wJui$x2&|Zw1GxH!|aK3ces1^?xCMw|CaV}
zx0zYV<HwInN=nMhUn{;QPV%?w>#xqWLNyTMZXg29aAU?^6wT#)U-`FM{TTPkHDQ!X
zREQjisxLq6`;;7t!{GoHCCj`tXG at C1rKh1B)g5osDXG-L+B(4BKRYMK)OBbk+StfQ
zcTy&mR?_JXjQKGh524&VO);k}FOTK4j?BG(<UtR6wKkFoqY8#<FGP|D>*pnn{^LtE
zJ9qAk<lTm7rK6BvFIyUXti2FqX9USO+Ij;*`1~mIkgaWY at wuBm5lyX`P)SX6Zb5%v
zADm`z+}Af at vU-cD%W|7x7?)QUCm}6-^0l?Fv}7x<+$L3ry&_HZm?<3fH)b2zzkOF7
z%5j=QTX#%PU&N=W3UIW83|GPu7se`LY_su%OP!tto;+Ctm<b?pKxpQ-^YikEfHZ at u
z&m^xYC*^WE at 7B)5FQ5O3SF{0D at MG2KD6I39>G(`;Y at JXf;#?X(Zn&gclqzOE)<v}a
zdN^_777V#I_&gHe(w<R9OL=Q`^{>AD3Qvl&k_&B$<r3T8VqC9)Srvde0UAC7X&=rP
zrV=HRhNKJo^nX28Oc?{T;2b~PG}@L0n5!PX1+c5Uyu3Z$x9u1lg2L1>ewSNCU7ex`
zFHXqGM}&o9FrwbxKn!LkU{9gIg3ewT%|cKG-Y{aHEWnaS1ikzv6-JnTt_{03x2lv+
zO-%t_n~)xR9$+{!a!=S}?k>Eu#*#~1C)FN<!RYNhaTCf1v^vQzLaJ981x&qH^YZ{z
z{r&wWhc7(=?E2H|JF^D at R)>?jAA8N7TfzcV0 at +9h=sBLd4H2Oy{QNrJyrD=^04L~S
zv)NoFQ3BOUZ<GPpCes{ZhU^?nb=HeXD>Hz0-GG{$@5SaI*Omdzt5hmo6dRnL>o5mx
zu7B9K-@;;SrHNe1W(zS-N6nMsC+Cxn{=3`7PT9sgemAjI)fL~o0pD$<DU=<xPIbTT
zaSrHl4>GiD?myT5Pbd5zP4e$w|9xfn8;$=X8Y?CtI*ahr>vc4N`zFZOE5Nh*X!!Mi
E0RjBAy8r+H

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-09.png b/tests/reference/transform_and_scale-09.png
new file mode 100644
index 0000000000000000000000000000000000000000..0692400de205f08dae1f43d2e814a1562946fa0e
GIT binary patch
literal 1500
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(0|V<s
zPZ!6KiaBp at +h>Sm${c at q|IV=$35tOijvaFHS-gP5?A8*&E6<Lcx^^h&;3<)$g at Ol<
z9Xc1~I6=frtVy9G;#Q^rcXxvalc3U~n{Px9>z-aEs2BKt_4(klXZBgo)U`Xa-~8;4
z`;%Eye!UKtXZUcRQ=$ng>Rt2aWB1FI^NVHdr`$~Yvu>YoLFm`2z4HrX>^&}<?EfY3
zfW3&5_aF<;!7$N+%O<{;-`v}~J9cm7=d}NmN)r<oN*Wj$8GSkW_V#xEx64bPo|?)n
zuE&!nDRoWH-`}6VmaBe&sRi at -GiPdc7JhzqHuUOipyBuSR)61h_uWG0_I<y;c6N6D
zJMr}CQ(kGan7vh7WAAQC^{&6s%+7zS_4)bv;a67%FaP%L?(SdB?HQ|ie>^(c9co(A
z6dMt-V%6{O at 3*g3_nWg~mAe1Dno|DT+j3X0a_^T54ZUmv)cXI`hRN#w+v;DuxVSj<
z>&M5(SFT*Ss_O5ruUhp?Poi=UY~H+id*0nwWxI=ui~n-pYUh^^yE;+X{nz0(F8Pw@
z=jJZUR8v!%wQT16`RiBt&$rt;{WwTrVt04<<HwIDPo50a|8`pP at xIW|+s1!phDm?8
zbm`K|%ga}1y}q{g at 9kT2t;@r%?k<1->oCx(T-K3sadn at c`G)ew8P~u3_V)I4z1UTa
zr(a&YcyYRZ{JLj96mQ+KY0dMW3bZLV{QLX+ at u9oR-oE00@wIBMUwW(Un;RP!*FOC7
z=H_Ogj)m0^w%w at x{cWrI&&}!Q^X}}}xC%t59p_(oP3^(PjT`-z7X$tIZ`$E@{`wyu
z5<hr;0)|KS1J6&lx98t}`t#?{gNf|?a&PQg-^Dv^H$Sk}Z at ICtaq;(ecUM^zKl2IQ
zTlF=|w~qBl<mT at OyuH1fSNF@?*Zu$Zcb;wawe|7!@9yl3TmOA+xLtB`GSKn&wq#yz
zWM<!I`Z~L?u<-7#(zl<sW?x_R>c_{&U*EfEZ$J2F<E*LAIrq<)_ltK~&@Aq=?@#&Y
zaD4k)pJs5I^WXM4jfywQ-!(S=H%?FBP#Z;~AuvE8 at QvT>#G^B6UB9D&#WjPctDnm{
Hr-UW|k|0H)

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-10.png b/tests/reference/transform_and_scale-10.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c488bf1c5fa266e463ffa43ba1041171ca0a806
GIT binary patch
literal 4314
zcmcJTcT|&Gm&V@^qzOUkpc1_z=qE*_OYb60-~x&?LAXdSp?3ulq+O{>Q;H~6r346p
zAYBL;kxnS06d|<GTjrpCGxM#PHGh0-&0#HIg*PYr?7h$Lc{b5E^)#6nco-lEV$!;<
zW(YwrCGh(S9ToU~sQ(W+ at Po!iTT>099DTjO7A8T^i3BY*<v;y0Nkpfce}13Ft;%D%
zg1M<(-u_u1doKL~)w!F0*mK1DX-5eg>4{19B=_O#?^-_pQ2%Fnkw?(U_=-M<)WbGw
zwo^hUZsrl#JlRYQL~HpbkDcW7={>Ysq=ed2x(Y0UI6 at Nk4(hLUEy>8aHF#}i%J<6L
z7~7Y)26=vFUWcIdGcY*Id21ybYR2oaVX)|vSI&x3(eP>D!dmFK64T#pp?fK_<U{T#
z)0zNAcN^w^d1_Nc;N6(?X#_GZ&o?HQv4e8#u<IS|f4-aR|JwTB_~Q&Qi94cV*x9tq
z{E~=>h_JA*h)ARR)CXKVZDJQh?OZWjW{EX3F)=YTG_<q~`TjAbr>7 at 8z~T7Wst|@D
zZWn)le=RMo+qbz1R4Ut7tTXT?ckUDi%Qpn=TqRK1&?AQID=aWR_??ZKl9Fz+!$v@`
zyZhUrCWu*H6lT>BbbBwr+{kEJt1>2+i}6uMM at N2s{`&fQWo2bci`uz|u>Gj?u<5T~
z<zgkzp0!?|BV4+4X?}h_NkBh7A%U5J;p=Ln(!^u>n!LQcLNp_ds)NIvk-ofy|JpaO
zNpf<sCNlVo!|BPK^026f+lg%I(Xp|yPoA7o3<<Kau~AX^5JAuS;lqdZ0AU^&H7hcO
z;BZ<YXnSR<Su>7 at o%QEpVNt<`i9DWw`}+8REP%B%T%lP$NJ~xK($=Q;?5f>J<$Vwm
zfk2>nsJyLsY(FVIEa~afo@{xiDl=k_?VBRUDzoCEqgCxP%E84Y9kRa-!szbq2B$oy
z`sjq%%Gu<a9j5^Qz5P%H-{9dse|rouWV$VGx;=rDlQS(fHCxuV%&D8Q-1v_h?(Qof
z=uFYVSFbeG)i>58MoHq{%eFK}iLw|bZML;(2+fdZdwo%;_4m1CmiTB^0sDLRoX6{H
z_Y7FBd^)oV!@M6QF)=ZXNbvUe_h)5g6%}o+?_^i&<CM at rdx0fQ)?AX#xAcxyJl@{P
z(eYaF?)n>}LcMIcok6Qmi+aCzY3Z>2;*eeM_9^!v=jyh$wuQlRD~wNRSy|c3m*LS&
zIQSZgcgV3STRyNF95O%u+xF_TuCA^RCd(CO&_X*#Ab2c|)qei``RmuO;FJ_{ucBl|
zX<Dyrp?LnQSN8Vy3`oWmcUB)El()C{?c29KJXYV?w)61t1WfetFg|+x_%SFhhzXpG
zkB=`RBH~H`Y$Y{43>mt=y1N^YfgcF0<WIUJBO at awCU*Y(c~MbOLBUvuaN2YHlOrP|
zWud5^ZHZ?(^z`)H+}z-3x_WvDW at Z61CAQUeTzGgmXtU1F&Ln=_=U482sPULi?}oM?
z>+_54ueKxO;^NYTE#BV}1bq)4QjJ2`A+DUw+<tu;5!LTlbxV-rNx_R3N(RX|oDxa+
zG}vk^5`IEm2Y2`GT at r~zv^4p?xU;_lYLp|DfgcHe3(}Ce)x;z2aKh_pSi?ylmg3yp
zTyPI6E7#ZO`>-wG4!Vxj82ov(zGb$ZKq8mxM|=A870;YHb@`rLSk4K#XUfL?chIi>
zEERjwY^@IBn<zISeldv162w?CxR95d`~K&uj~SkFNBQ`~oMBw~M4oy!rO?iZQ$1Mk
zLx{o~u0W0WO%^W-Gfm<MWMw|ZLB=6y5_>`k?D6KV^nTjiyxW_kQI%@elPAyJlLep3
zy7K9zYNT@^7HiSr11W;k?rkj}A4Wjs?nCrH!52;8zI65KXHwAnq9Q4`@h_GLUb&h=
zG~}lqgcH!q<dSeqUa$gH)rdd+23t~Gyf7~WS*~^pc~imR#KX^h+Gy}>r0xG8=>W2i
zo{2^kg+eLrpT_|J_-*{?AMqUIR!@*yyN>R)B+R4ulRCXEAj^|MrZ<pNWywltX&M?n
z{zb0sc4TP1`_uz38EI+1;rDj(@^atDv4Ij25-u(-1_lP_HRHe82)^iTp$^(wB3{r=
z9jo*1+F9Eev|6qnpP8AdudiQjq#O>E-a$mE8YH*#1}>JO$IYspZ#y`=PW&4R0hOj@
z=Kb=+n9Z*9=>-c#BMS at pz|F-coFa9+*R8Mt-UquIjr(ib%F3{<K3M&Q8LlJZjCktk
zbXW8$ENq6Srlu|~IzMUsydj?6Jath>$f6GQ=J(DiDJdgsCATZ;LP9OE0UNDPI0J`2
zlv!Z(vaVgYcO{H+g4JDDH?BJK`STx}uExgw at n>W!(_(U4T3WiFiTwotYWAb3=sDj0
zH(Hm+YV(BJ+uJc%jK{P_2L2VcyQAZENy%7aC<Q#9?LWg!TDG&ZQ=x%xGmFA73LN5~
zo*Sh<e*C}&ZaIpms;I1y$yu|-ADWv at OK!cyde48p at Oy7v{-o-~I;nwqR8Gk5n}sFc
z)vv9#ZLtK)I$=yH-K14Cy)-|+#+^fu*{bgoA$z1KWXLB=nq$XG&1*k<w^mn6y2$YH
zsdZRG6wq4v`Ft+^eXn#QBO?JwXc4FVHu_CTKA6pcQ*QO5HZ636?8U{!Rd$0IW2%*i
z^y4x!Jy{s9S-n|LFE4VvKRH$-4{z^PDkUzCB8^nJUQSI*bL!HUTa8F;f(})?d8K7#
zWhEs|0`H?oOHGQMuraycW at hS$$^))wP7V%7k-omZNJg3!qzx5<j&7(SIPm7poBGIf
zNtcl#<KnSHzi%CX1Mtkg&%HQ2Jp40Vcl+o8e0)hG{TtFI<%56O*@26u4}-y6-Qv#3
zZf5z8bIbX?&AkZtmm}?w`??7VQCW#N1Sk#NBKo$rwgN^sH8lYp=<4hQ#fWdRp1Yp{
znuCb(W#$o|s~WUi at JQB~qph1xlJ$IjBrv%bv8V-hDw?|QNf{&a8v*FqjE(%NstsH?
ze55PQDrA^*8pdmK;9>gF(!4R`AjQ;@V99c2l6@)q*nc-F{4;#13qjW9fD{be&}2>v
z_2RXxPnXM#B4K{oIyeA8m1;Qd@@e=lmt)hQvUT<Ex4wv|yj}qu1mqa#fZJs=!PK&?
zziB4ViNZ92Qn{#SM^Ves#fSfkAENP72?a_8Vv~7m3w at Ko!8A2ALe>eIa9J89%Lb-f
z#>TU{<I6-$Vc)!pipqlr4?rQKe7mVW$>vZyqeu0DC;{<6%KCKMyc3s_0z%t24|F~z
zhDX-N+0pSwri_=Nk&!yFnq@`*D_r=}rJe2Rgiy-CmTMuy0MNhw{xk9c>&4{_H*VY*
z0i*}SB`)zC$Ep6&__3&{?r!rVZZZ4hv^2_sniYm<X<#7gHPc<?G<a>R7plMD$z1P4
z8o_5s1^SVF1v2o}_xt#bjip>h_}uvbA**Q>+$V7W6_|mAAccnn2XUS_nujkJ&~{PH
z at 4OcV9?~+$@X${xwk(Dl8(X}yi5w-XX(sR<;i5B1puMFfA}VSDRW~p&07Q#bK#z@$
z&AirAy_i_L`$VLnWB5MqvQ2gz3iKWb(qZ}0qemf!JG0uUf<V~jH_1S4M$v9o752J;
zfqRsARRaW4VSmi4*IV&Mb{sWIvzynAa(G~d4Zw~&O9H0t$@drkOtZrFB)np{gyeY!
zp{cAK{_~3H;Mm#ON7evFtODjQ=nt5^wQf2B5s?nk2PFq~<W5g#=W3Appg=~gD|MIv
z0O;PPi;MqQjYoDl7bj<-&_unz(XZ=lJxK1=$m9I08V-kJe(f-H at 9O=o!7>YSP%8)p
zGa3hhYaFH-%k@$Sc at 5P;X17pWtUC#11KG*fN~*N07&f=CAa$AnaPREwjC28?!@$i5
za!H+;l2RaquByUk%kP13vE`ndi^GeHi?Y5;4x#>2k(?1fFS2k!CU_<Boa*!E&of1Y
zIJC{o%=GknK13cD(0wj`uj9n*u~S7wl2THXo!Oi{Abr?Cv{!1Q(Y<@$08f7HL4`Pe
zybF)FXb7tHkv9QZ?#YtH+gE@>Khxn)(lST}rK_&4?&;A(?>vmjEitS5=#LeLdg(Ld
zR>lLD@#&(?q=cd(9~27Mq%Q*lfaz5Q1+9)%K3NB{-ao!DEAHR?avcCr&^nJ$^H*>7
zY)<HS at u<_qn5%XllL3P34$lGw|D$kOT}_RRgCk_EQ{W*D)9zp_yE;8H^HJ%6q~#z>
zskddCwpth%7|g)E|JwQluuxgK2~Z_-;#pRETTJfU#x4$r6UYg=Dk~dE$W;f9$%Yo%
zW)~%gV+x8Kot&Hic5Q8K at 7&4ID?HA`6c-=QD`v0b=T~F8m3L3!$|oV at IHy_ppr)Ey
zjpZ~<NznB!{FevVVIW;YZY!&)snHE1CP7=sq2_L$8zn4x(BfEas2V~k4T&UZg`pjc
zN4tAFxQ`UV!iHo9z8IMbt2xQKA~g}zw at 1sSPESWihd_XYA1wqzSWs|(ccC1>IuQmP
zYU$v#(}Xuxk`PhTbA-HN)AF*{ujj74xp~xYgmSBwBIY%3U5RzUdz;?D+YYyG4UM`r
z5_2BHc&QH9+<`=-3f%$r+-Gaa0u2U<=CN8YDc7;NfCL99d&M7TQY at jUs3;;*-q0{k
zN>0hW7#$s*A?22>5PWSSCtP9WF0QDEgPr~R%#4Y#vA3 at 8(A&EU1EqmvywtOg%<Ip}
zsmj3ggU8E*lMl`crR%&Z&`v8euYKyjkAt%y-GhUJEx~XV5;E9T5vwr`%prMg&BoR?
zl46Bpj%KVWEhT|)557JTsod*wTn`8~H2e$#zA7drGj>evB<owE>jcJkxz2k*kVAX0
znK;!P<px3kWdw4ga(D(35QXXIC}2U8EgaZ1H#biNZxO$Dr2*D5>}W#f(eyR>`7Oa1
zjcL&RihGL{z-%+ at a6)x!{kP|i9p?ZZI~_k0xV2P;M&BtNC^NP4uCi?hBPy-m#pv40
z1+U45yskMILn^)Q-;-*~X*jSIKg}S3!~6G!z#;kpXQW{pI`Nz~EFO3|$NzOY{x?S0
z-*fdp-#IRCp!~&F4Mx|*%a!=g7r|%gL}xVGzi5YEBn<r)uK%Y1{%hNJ6xca-I;t)T
S4h{ZU0col0sg<c%Kll&GATTum

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-11.png b/tests/reference/transform_and_scale-11.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8f266aaaa937986cdf7489d4870b88673e04611
GIT binary patch
literal 2918
zcmeH}Yfuws7sodVf)@y)1`#4 at xfB%&)=(pt07~RC$fZU_5CS3>c~zv*63B&wf?O1&
zkqT6Vl%^DI1qp!$41`b`Ervj;2%<n#2#5p{2mxsl(uL3O^!q#W{&!~2&hDAnea`bg
zzq18lA^s+tEjI%IU=kRBI}QL4AMjea5elAHL-%=t!7wh!9|!2yj_=!RO8{VtRUq#0
ziS)a(qx53~YLsw(XbK*7lflh*a|#N~%SRh;Z}D{t(4W6Jcvqiun_EXuL5DYKzkpSI
z=cr*zII_}b$uk|uI@#85JxZSz2VJO_`Pm<AzG{0F5+Z9+pjfnBn~+p5>fHNgEJ{C0
zgQx3MBbqBLjna$#T2u-3aTw~r0)S?tMOYyNBKoi4_*<0VD)k|rUT{VLJmElL*Mm9G
ziopjF_=t#Pg=x-_>eNFQ6-kiaF?9?_M at K75OSvv9H`fqqxGe{N-sdx@;SSr_e+``E
z(Jfe-udi=(boBJ}^e?CCh)WolMPC*o{rveoNVsCG-DB&<iOESrXx4UzkRI(2wEUK2
z?cqH>-vbHHJ5pU=U*Fl;$?+de;ce$a%D<K|Dk>_x|9;2r?d|3CTjtJBl!TVvzJ0rF
zO*;_?H+MTmK?MB6Nb8l_P?kB<-#R0H`mY*$d;6N2nuLS|)uaS%Yzx^AE&o=sEX+L{
zpOBEzK9+~dJmliy;^2 at +&YIx1L5Btgv at 27r>acsYwNnc+aSUD8oDZggFWLaj^7%-)
z_$;)xrp7+ at 1Yp{TObuL at lQ}<aHj+Z&x5}QobZGw?S(B3u;o)*gsMl~~LJ;()4NB9c
z&}tM#&M701r(btwd+QeQdv=glWMybH`sl=9-I)&kDxd8OEiac8GyVMh$Yk<wZ&J^k
zIYXgnP;{-?4N;Hpm8o7yUmq#u2vE|9R1R~KtgNiM-YA<d4EeDo-QD-^-P>pY1wZxL
zwQE$kv0a{w5nAQBBH9^ak^9Bz)2E}NqK+SLB&**ih)ZjJJVXuugt2${fwTDy_0m%B
zozKPN^Xctlg at uJ$E!CXxQMZ#(8<>0N&K-18 at 8a?@%bUKcT~QgCTDuzCVlcd>rh&HY
z7ev<)*2NBH<4_ARQFwA)%L=J}{s~G#sg{&q9%<<xSd*QNiHV6?t=?2_F7$rkc`YP3
z_;c^AnKN~~$4 at -TUvBX^;+85)ruI1R)EEHWv2L&5tm}}=o_+h?UU&TlSz7kAowA%5
zlAs_w5tt)=)^0GF%nyzYE0%l}&>);_P07f}2o5gFA8DtMmgh!o;_4qsGc~g$DQ)UC
z6?ogQOZoJ+BT4?^V;dL at mMEO;5(vDYhPQIXB1W8n at t(w$9b|BYnH}^uzg?T`YHDht
zX_kttqZ?wgqzZ8Lf^#rv`CS=<cX9YY8m|a^P8!QdT0Fbo!q_mox6m+lUukGHyZ_x5
zm$tCzXxhR=cfSLDb!BR|N18!)CuocVmPPLFA2R}nhfn=_|9<k4e7Mg`^I+vzP>}d<
z^^9Vq)z+q{sHm>4jzwQ>?K%f7&zB)SfDYYi#_F3=laI#7#>Rp+Ce4j}_xXjvwhR?+
z;?HW|oz79I)G%N?0^ZWm5rZ>#Azbv*%DH{@F&%Tn*2u_6GKE6(V&ymScpe`1j7?yV
zROeZ5V}gq}n^q|FAI6K1#&_kKAP|VXd-n#FIU|^$6<<xeL5>M~1%KKsJP(iAklhKk
zofRgfC8|D}pZ1+Ug-piTVK76(dm+dESlBFAtx&zBN at eP~bK}cWx{J*jUP`op+M2(p
zR#&=Rc}y)D&xTs`fr-S{n<#HWc=*uEm+q7$`OB9tm&Yi5o)h!waO9ys2L}_Y0$>5I
z9{L{TJ9e?P8!<jU{`dWb9BFcCRTTk`$DcZtrkV`y{UOV)f$q{ImRahHa!^!dXJdlc
z(#k67AcB$nhP4Y2$>o2TB|QsVVjJA*CJHr6vp2Z1=c9a5(m_*Ti<1!*BoK%fTp?7r
zPYek^aY7DqqmeC<NG9{TfLlVM at cFt*cDK_s2O+S)u9G16@?eC<`0htv%`B)?mAYo&
z6IZsvr$7|f)zt<1EeKR#;Ah6!pMJ%NZ)}B1!9?A%)Wz8utlgTPK8+MmGiWp&NEMlU
z&5>NFe(BZaKJ4;{OkC#AD)3|PbRo2*&%b5b`iE4yi}tP=A9hm|*WBEk*dB^i5Bz-c
zmqsr4vQ#kI-#<U|u!GP_OnCNFa8h5 at ZhD0)@C0-LpU-EreQ{p8#b>em-=*;-Q=loc
zU`D at QdNtVJZ&rXiRUb92{1JG}(OS1~xp*A7bs&HIXAow*SGvbmmp|w-&8FYKC#K?n
z5>D&==(A_v<oMsXejS$+6yZZW4L^iN<8h#?96ZUgr-&8(V-m1ULKHflda#v=uMMH8
zBp6eq`<HKXR=zS3i9|PzjXv at c@8oDR>4y(@)&!LeK8%S02Sa4!e+bv+<noJ`F74j6
zE21r(vl3$A^Fsvu#cUeNBkkhs%VwQU_vyOM6(=Sop|E6E`vgBsI;8v)4^kXf)q`dR
zOn~;RL?_)`$#{6yg7A<87K0fOzvxi{*xixT5W!Z?GersL`c?JJkdcuQ`oMvOg at xmI
zeC2Mq4;Ae`6dW8(dt2ae*Kz~nWGT#x_V-ngx!NHEXx7g^@8jD-%ALg!9*?IO<~poi
z7)il^UI6KI^oBWBuT`C6eP(Qn#bRx3ZISTMv}_{=t^t{PX-%`RP(K^yqet#sLYY_%
zHkro(B;!Nkqnh65zl38hk3~gBTEg>={;pVNd64FshX_~V4g&ZFI)V&#xqelrSyo_p
z1%!s!PLKdCUyl2g-6&dM*m1U}x>{n><S+ON0Y&}(q*- at Q&xnAg0XNsvy7<{RB>xFf
z2qGa}ryjCp=I6JJ&V>^)68fsJARIT9n+SI}8I24K#1Degln?UFKB)96iR7)UOx&=p
zo05&O+m at s-DTo&dMtWBnMx%j)JbPAZ9DB#fNIsuVBocq37L8^Ar@=b#q?!Esdgs*(
zFK%rMfQunkxrbRox&dn#dfjaQ_ZAS?zlPu$!n?3N at fs=2xB8oQl)?U*<PG5PmtbcA
zZEfmilRb$$+FDf7DhMO^fpDGCe*X{uyCu-WDh`jmxMcsz0sL_W0*{8^>W{>J{SVlj
BREYop

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-12.png b/tests/reference/transform_and_scale-12.png
new file mode 100644
index 0000000000000000000000000000000000000000..091bab232023bf0bc79a29b470870ae9992554aa
GIT binary patch
literal 1625
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(P=L?V
z#WAE}&fB{ivqfIYAO9%1d5MA75sqb^icWh at DJ3lLoyrpI@}KjdSI(0O3S#O_WlmBD
zg9N@@XUTDqc740WyD1`qrNu>rh4W<Ex(GcPxtMRAGjHE#k6WKr#`N&^p31a&bMLOL
zpZ#|)lhIr0FAN9XaY{5{MWz4#p6~wud-03=mFu|wd50x%Y&*;q6B>Hi<nN!wyVliL
zN-XFR#isXf&;fb7ni+HE+*uvi5M*tC;^X9gd3!&9e|=rut%ke-OA=Vuz23F%_2c9H
zKoMSk{`2S0=jY~r{W(YMLfa<q7n9Zf^>lPhd^hjgSNHOgYQO)X1W}ehPfkvL`t<4N
z=jXpqd-V7BcYPh5E#{IN7B at Adr>EEd`Ek+2_p*uqe7m_bX3Us5b0f!LhN-zpd+Yz#
zRaI4`rY`+nl#%h`+uPf^KCEAsDm=KCbo*t=vuDrp?(9f>+uEpICtp!q{Q2Ty_xJbq
zW+zK6 at Nhh^H~Rj>i4%_=J-Tw`%6nngK71&sKFs)kT at I^V`MW#c-{0T<eWRP3o0*we
z)GVGGfgdMF+^#Zw|4_qW<s;uU^`8vHc)V_^ez^e#-wL at uGq9f0TNoZ5zIy+(M^~?g
zzE?Sz at YBYCMLVK#eeCXQ))DdX|6lSL2(U8BTNFHacXxOA`nb1yzyAh0IeL5ERx^nW
zo0}Te$M4^_b!%wo)#>{2+sZfOI08L+m-&0y+N!VLF4>m83Xx7`{Ht;ANY%$juA!mx
z?P_1`jfsi5^SHBN-_*UmSE3tV at 0vGb#*4Wd`&pSo1PU&jq at SN>TlM9|;dcJ&^lR6y
z at yXlWIhSzY+^Mh!&(F{Q|M%(r{I<sb^VlsFA`Wud*xB8?Cv!kggyqlA&(FU-V<=mg
zBm8=~vE3Pl=BIKJO>h56TWbA2Z;+9y{o&>1<*)abSjjRTP7qylV6NZt+i&yaOLpI_
z{rxRdf^9_t>$|euz$B43D=j%W`FA<z`k0-UZsi={0|t?P%#IJ2Xa4;8bFVa;#^=?$
zFHD|1x!Q<*1NYJS>~Rqh!0?QSjFgm=T)FDi)z#r|dDz~pNf3Vh`uh5IKG|6_XWq0c
zes*SNGduq_1JMi9n;P8R-DfZR2 at J)}>F4`ot<6kLuilGru<w$8A|Wfgx8h at x^kRmk
zf3|S3Xmk9yx3_w4^R9Krj~|cUUswD5+}yHdOuvEzK0G}=y_!8cJKMcaX634^jEs!p
z;>}ZcHrR>WXU?||c*(sn;Q`k at cDuqyF0t3|=6(P7_qXrm72<5`5?JHn;?}Lo%FBCq
zcDA{G{JuMO{~sJ|-aDWBh4V+%FF>(+E9C@<De=F&WD_>jEahVnHo$^z|8(TDZ(#Yq
v{nh=ndigIr2lRHfv?VZ&q7e`R^-L+tWG>C_b$S4-D;PXo{an^LB{Ts5VUWLl

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-13.png b/tests/reference/transform_and_scale-13.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cbf67fd058ff54111362472103a825a977f3788
GIT binary patch
literal 4051
zcmeHKXH-*L77n7|LlhP1k|?ZYA++}Zh0sL$LqI?vf>aek2k9lC_=Mr1fYONpQE8z`
z4K2hcNDoLaAw)o0Lg+O>GRK+uGi%NKonLdZR(7(Id+yzPe`TMzyC(Xlc|>_25Xfmm
z108b+gyR<Yyms;!cxRbPse!=dY^1LPVgG!+BNQY<Abfu_)X};Z@|Hmf^}O&H_IZ8$
zgUsEoSJhgd6iaW_OF3G0^-GzbJaODv=MI1A<yK+mOA;w9k_IZnNZnt~Ka>|Pyf*!3
zD`%H+#npQ at Nw=;+lMGI|8FdE*FC0DG&<LHP*asYZVNLBG?6)l6aSe{mr(#20vaQJP
zGP`*pzm3DT&OlJA$GDD5I^L51kHK}*L6(XQjN0L3TW7FG?Uj#lMxT?vB+T)TfIKBs
z5s{I<?=Zo4=u<WB$rmQXy6JcPzw8&D#L-Au+1m>t6A2q#aFS<J$hvbQ#d|Pdd2D@$
zK_;o?H8e2k<wO%xQ<z3X$nFY7`}S=_z~Wf}fz*_gYTxNE+OcOs2~&DGdw+4m##Si3
zSk+;8N=izJJt2%XRMg+!f9~8llY%P!L};QWYwyd8Q(zrYe^pSZQu4`Vb=sE)FOOBY
zqfw~Eukk{*n?Cm&0^B}eEUm0!Vq=R*Q1n*6OLN6Z=<bczvs%~X<k*LseYTpfTIZgC
zU-aoCrNubhz$i$9K3eWTj6C|$nGB0M^oxi%j5#fqe<yPwp^-_tNqzMAF;+8b%GC$_
zePi?Is;a7Th*<w>jJXlWn5ZGGI^)Uhuf&39T7U8AX9Tf9(yZak{7ej{xLhS{t8kQF
zLq==XfrqEl>BG+E=H{5))4Rz}El`7s>2ePCwzlLh1{@Bzu&_{2P(ahRqsFO`2QpxR
zOpCPr#3ma8yNUMLQ97j=eNgQ-xH4JK-yvq4A+HsP%9`&?zIuc&DlS$<Gpn2PKYsjJ
zSve5ZZBbxS<P%MDF)}eZ^N8w8J$Z63-63+k%GDHpv)O;4*S}9a9fKivwbYE#?eN}|
zu2eYLBW>}mihtPFV*iXwdm at az*22db`k}S8H9=ez_qC}>EwO#J%Gl4ZqOSmnMiWd2
zVjS3)FJHd+Ebruw1uDI}CSb{&4I|})iivARK5!V!GfIE?^5xLbP%JERZ0<>Fdiv^E
z#q8&2oV2G8v*wxGbPIFyD<*GIrJWre8Hhj}O9Jmhg=$7Nb<b4_hVLwg?yXHHC7nfM
zK;EJ;{U7ubRs828cE(-J%*@=}+zbs3Il0g9^6?QP_BTM!Ox`Lxq0KY$>jUW{_^B|s
zqT-PJ%en4!;(D9dE7m6e`SYUcsf#0}wzqFbBjRP@@Ww#8RbRIHwpRjFowixJ8AhnD
zuLm15yBdR61utAE{JQvaq1eGXXL)v>5}7pk5zZ8e%;=tTr=jkfnZ3qhOQQnUzW;Tw
zyP6mmXXc at oa8V_AWpcIoKvrFyP*&D!vlP?_nw<US&5W-yZ_DBoAsjGa+q$fzWT;?P
z72EraliP-|Z(EJ(-&z{X37r?A4@(1L7#kXj{Oa7A3b!s%iaOdJ9WJ(>otXg}OxA<$
zVUHZT=AP^)TFYp(d}lJ5U%q^C%|TmvIcCkjmeen4AIZB;SLnvsQ1O+Oza1$^T)*DA
z#JdCIMMg6(G*nhT8OB*k88lLw9si1UiL9;lB3oHld=OL(q-`<qRNA&wm1|#bSJwbW
z`r5TMO}r;2BO}8w`O4A at q=baTPjUzv4|)bDPlPe$$LQPHh``_3?p|JuOa<2=+xE6L
zn?xfcBli9R3~h9 at MRutINWGjy_;Pe%hyxIf)u+k67atcF2MTR$=erT228uVzNA#cX
z5&7+rfrXq#6f5FLr+;>RnbL?C4{C4&ppcc7wTi!ikx^4qOA^`=;mY}W&jletK^)n0
zeSIAitOhzdI(qOia^r{Lc56~nQpLk|u1f2=oame1<AvnBC#nsP996KrH6EiQqoX$i
zSr6>&&?}QFH7GpUm6SEyLkD8wH&N}z%o;2(#m~;6U_aaT>%%s1#ZZ<vr9mky=v&x`
zJW>V#W0DYVEkon{{>LAGn0?T at pNL+Osi$}czPrIIi9j%4>qCEeRPL*J!tHauTN$$A
zwk9lF$zx=1eb&Rn1H-eoG1pC#NOlqi+(}g5L2j;Y{75#Xx%Q{a+C6EcJY$4Nmf1Dd
zg5Kn6$3j(}=rEc{F5ydg>4-quBbkN=WgQ&`>`XByC#Rb}Q=YWcQm0QgB{-ZE99{*b
zr%rg*{v^sp6?3c)-HUy+OLa$j3%89`JQRVPI{%SlVSavPieM`fv@#hAU~mIdn)%dc
zvMv{<+0xR2mhEKHsYGIATw!IUxn}f<720s|<~%7rKK@{9&~*5Of{~}^@}C0mV^OEj
z!prL+LlxBx4G2w5YS^-`vR)z-o0RlU7L%hH#cF#cHZrT=+N-Fjh)fiL#Ph%8xT&Zp
zeZNvioY(6H*`u7`VyrOWdTPJUe<5KiNJmG<V$^5bYfJKzTb4#<&3$d{mV;Fy3<e_t
zlCt?;jE#+<4|Zzy_6J0n@<<{Ulao{4>kzh0Q}X?Oi%uL7P4CXD-4cQLb0gC(@gTAF
zUgTP1qKt at uK+U7h^YjXYRrMkVYrhPK!vV!49_^4>{-tkC7MemgH#Roz8F6d?RH^v4
zF~6%m`SCY|VI-}n0MP2KNkIeRan}5FOYG^EwJ<_xXee!olZ)38B5ic`#6>|t7hye1
z%i-`<LV+pWw!--Z0;!aorzGScGcq((9ioeCXt0UWYNV8L<$2Aohs^h4!xz6@&an$b
zVC9<DZaX<mr^(nJ7P!BNiOE(CUh&biF1O#Vmt?fK3P;R!r2=aTCrp8U;!^pq-1*e3
zKzrsS+ at 2ur-$<#csd4SgwzPf1jeL8FXAB`QS?4zk3 at q2`jMxonNy!gNrmKSmiIKez
zEG%aI at q-S!x-X!iK<-NUUf%-L+HHqL4UH;aOaOwCmX@|MR-sMgTmBHdI`#UMo8P5(
ze9!G<ts^5N?d-4(4s!tr%W0su?i-!JYXM%&Y;15Q{29k&%+8*eEV3vtN|!}%bY7*6
z&G{;il-wWeDs*;s-jbns2Lr9%H0|u}9!yO3^Ydd>$*owLm?W at rzZIC~<U}&v4t5xf
zz~1FPSK$YD?}Dk|gc2ljF*kOIwARtlq4k{WexjJD=$`<A@$ti%H#i;RqT%0xELvGx
z7b_JN6(wIa^`0A)l#tMSDV!@vuwMn-$r^7iEAyr{qnTNNz||pj9@*`)^}f^5HUY{P
z9U}K1|Ni^$m&(T_a-4iYPHt{ReGnug5g`gnJu~Bs&Z0f#;AHNuvK=Uv)s2^U>Iw at D
zOv`}Ac#M>|q0NFC(LZ%UUis?P0${gA47}&~dn!8sfd$Gz+$FI1^4(~oomdlBP=ZY|
z_g+E_RlcsNsj0BABkVD|YUam}N82(8;BWhz3&ZJkoYJ6%P5uieXsE89UfbGq%j%NA
zz~JCE^-XzkaX4##VO#tC1|YJWZS9 at ag}AHPcl}c*dc5)adU`lrJejh1=su{JD6X28
zoell&b3uwJU-$m~Z6aq0-s^CIqaNJ3scAB-N8B+tdW#<q0Opmk at C}ISi&H|)2P=)Z
z9%>XDJydA6w6p{Ydc at oY=n|5B(9zksKOGC(dhKpt&;fLS69yqOcEH2a&%AOHh9)k|
zr91TY^h7Y13K|2JoJlDNG;<5snUs{&oxyvO1Au9IY_%ldm84}84`I(E5+~qjzQ2y1
z-WjMGl3Hn+qw$=ZueR(=N@{A6>7D#rrvzSdkUeVw!t`}@Yo_as(xg>_mdAi$l#C3G
zjCfB0vd)u8O?ECWF5%))_UP^5<z-JL_WC>t<I}wF65nS7=D3L(5AtC?bCnB|UzDGc
zAfnK=5DYDSSSj!+(n9^pm3%Pkc};PsUDFESDQ*4wmB3=sy~4eb$T5JNE5=!mJSc4A
z?rC3XyM`@n at RS>wyiX_NSA`rR&h0S@!)FwDYZU`+4Pabw-ls2k8lEzO4se#m$M)45
z!SzsOU&q<DSA?)_cNYZ=Nf5{vAXG_72}DlgAOlP<e?8~6J#0y!Gz5CIYqARYp35+Y
z;8+dbT6stsd{H9+43akiG9V7EO98Sr)hO2CKKQB<vgT-J)(@=6-QE4-8U4{RyNAxs
z=lS_vdoo_Xc{9+wB-Pp3nU|Lbtdt67JS{CPU0q#cV`CHw1zZK-FoqAN;WyKI-6CI+
zX{|h=2jjAR|NgxwVSf^gI+wL$7LzUOIi=IRzV$pNMbt+Gr!{x5VZvUs{sU8ors6ho
zizc}o)zE()6#jKy_*WPs82>=c9qK at Kx%L0;;NdZyE&@5Okns7b<8j`TdjAjqFTwu^
b1?*!eE7a#CacDF+r9%vLO?1j`J4XK<vt+}7

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-14.png b/tests/reference/transform_and_scale-14.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd359ccdd43c63382623499126f070efc3ccd8
GIT binary patch
literal 2680
zcmeHJYgAI%9>+(%uFuMwW{FD^8_n!Wktk{7wan2_D at 9Gv?1q`8sZBmGa3;0UUh9tO
z2&jy=(kzup8lOBQQmhDL8o>u*R*FxM6ahiJr!`;hmwP|nPxCu#opaXNYwvabzsLUX
zvM6MzmBn at o5C~)yb}Zxs2xM>=cwaIz1n&AsPXzEVNeK at P0d0J_er7aQfIt@BVIg0i
z%BxuvCmkD7fw>A5oEvnnE3FN-=haa8)fmo(*PSZJm9y*rxK;knB_7jkS8}|%;sk_c
zpC283 at aqE!cKeSeqwOat`M*b`pKh9M8+A3ei--_SQ<i(wZ9Y=btG<CbrS=dQwWg_)
z!;`M3QU+BxrZlfg|KxYj`OnM+Bhb>I-9DFFMFwY#EzR7L4?7qbJvVc(J=$Be&(Ng!
zNCZREPb9FaKdQmKhc4wQs=qThLx36uv;m;e8a2mG4FM2|SPS=iH=0r{`~m`c==4I;
z-H at 34e7M2Kb7#!0zAQTo^{%Hx at 7_AfB5cge%#>O=RqaL3-2ub1Kgq^>u+u6nii%mh
zbNBAugD at C|QJ|dU+ at PfnBE!SO!@?AK2);0rscGowP?h<ty!4>(h|tFS_uU*US5+!*
zfB)LLUM0Z|jufoS2$Bfv2XqPywd2{dl|~BwaZ?j8opNn;1en7~I;YoZN=i!j1H;3^
z5(dr#0ui>N$#r%5LVa4%tU_nx?BEc`EbMZ+oSvQ at 9WD6u=>f5_va-vdqrE*tLhov9
z^w2r_`uZYk{GOf{xIzQ6KD^K at ODXDLaN!dB&dva2t-pO>TwGk9dg%;hFn3}2X at 7tJ
z(s4UGJ9l^Yii!$*dwXnEMFlN;>KiDzx_b9lUv&{S at QI0uF1A0Em;2J at MO3+jF~;l6
zxPh8jwp3Fg9v(Mu-mER)jMMX>K0cY}&ksnKr>3U7<9>O+rkuZh`?j~YHyjQ}wI&h|
z;jZHG`VW0K-!wmb_>jRk<m&pbM~?=Glr5V#$F?LW$8#rI;-01`KJ at WV6#`s|#p2se
z2Q!9$Vb{Wa(A}T<=@&=Z)M_=G&2DIbc)aKH`C65nJaXOC2CtsH@$A`tX!?Z<zO?FU
z2Px`(42)qw&@Of$gTlhXa%JKyu9v50X=y1PBOjrqidxb0md=R0%iKFVS-Q`!+1E{h
z;r2^o)3*qUzHN((ivocF at J=9Q(9zP^aMPwu=H}*DSYTk?y?a*x3IN)Gf9nn)ji8dQ
zO_}U)bnHs$E6<Vg;bo+FG`g19*WYh#V<Qp at OHFG?q`AGc?@+ at 1m>1i3?p)U`55C#s
z^#!kYf}NZKa%DBdsp;u%C20h(#N3{`!5a7$i;@QXXGbX3Pf3c;$yx60Eg~{jN7GNr
zr<%)8CnP{15MFb8yO1ZOCdu_XEJ{dZ@@*wFB;stZsr8P|Yufff>66Egw>vs!akXn}
zK;68Br{N)i6dyM?4iB%_NEHf2YJM4*pi^*cf_QwseqA+@%BxlgLczol<~1#X;OV_i
z9doMP2wl@^aX1{8%Vlload)}2Z|7sFqA{^pHzT- at Q_0|7n+!{f)8d11h&m>d$-t>d
z at h-N<!ooC*9TVafH#axFv36~q8q|It>I;Lda>0a<qeqd7&1cV^1#Abf%s0Q9lJY?W
zghSRNM_x;orCkPU9vB$t?LC~5l7huf2gvE~07xVfk!YJm3Gng6$&(ubiZwmzov%@7
zXy{Lsl~y)3+!rrS#m182)j#?{ApKo`o#JsOYySD@(QfJYOIw+M&PJxz5lAFcGfj?(
zi5VXsPZu_4!4}0`IqFE<>Vo;iYq%AR*3i&UT51Aa)~*A=;PVnuDA8}frC`(2(rQ3|
zfBwu^JT&yJPMrlE`!!ue&tG;PBLSA%wk;Kl^lmLHD+~W=FLC5Y_i$I&hJ@|K!Sxj$
zk)-(S>}(VYm6fGvj;D!RqNAf}`mKN$hMD})&XzBD!viufW!>K1?ti_RQlFAwcr~NA
z`e3G{72TunJ^-XTC}@JW7ek*(e3QMy|H{nt8!|RFD(bz2uL!A+0;CAVR at K!xgTZpk
zz`UjRX>z9<Igl}#O!fptEkHO+QLG8MvVe;25efv8fhKv%<FDbD2?Q1~CN{P-^48>4
zxdeUkB-GEZGh at 8Frl#h>g9kvulJ}j*X0p~-R~N?`@p!6;OeW)WY6a(pjg6({u3fuU
zR#uF!vsDv>ARixUclVmG<uu>TCyA*WW&$dvrb+>BYdc7_;DUkzKZDY$*#fX1AiAv?
z;?n%{lE3&QcG{X5XNWtqCZBK0MYy?r{PePdZ-~19$irYT*vU&Pv+rcd7cVxKFf_Ul
zSr5BDYBvy^c_oR+{rHm42kL{-R#vVci|Rk*n=FX22!H<z*m+?~PG<K$+Ho at MVMD{(
zIzD$796r*eoqJX3#o=%O at 6XQ8HZ?U7&<HAq;SZ4O>FHVc&MA{Fc>C7Y(qwFO)H$%w
z0SsmpYCiLL5zw)=bKyuNQVq>xNR}$*Y6EhCosS%k!PEt)6<jb&DLjpxMwq*>p~`J+
zzoaIhJ2(g0==K9!A>UhA_|O`I2t=Cw(Q9grL_<SQi}Bl~TkLwn6%hs^k!bnX$X>4>
z-1oaIWVQwy<yHR8=sz3X|LB2#4*f~ge>)%jKfSSTs!o4fTy>-_5;#hN!j2$AT7#3n
F|2MI;yTkwh

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-15.png b/tests/reference/transform_and_scale-15.png
new file mode 100644
index 0000000000000000000000000000000000000000..38623d1809220886e3787307584415c0b8467c6d
GIT binary patch
literal 1512
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(0|V<^
zPZ!6KiaBp at +h>Sm${c at qKP8!iO_WDziAZO7rm9ktLd1;-nWhDE6ZD%D*t8Euux{D1
zL6qgAlxWVS4CRg{Ge&N1ZO7&X3y$ejAAK<Ca}v|^ujj8<&&x{xe)pu$$A`7)>6iX|
zd>+C$v#stMBg6l>4T>|cp&K7g$)Epg`Zu}n@$OGsB=>6 at 8?Z#DvaMScxBfeG-(%~{
zS<lktnQGkA5;(RkYnZ*vvhdN7OJ|oF-`idOzU<u{ODn6YUteCXKc*8JDy|=QXG7xQ
zcXxN+Hhg|=?(Zyz%O=Xo%5Rq&8ykE7_quE{dGh3JOYRe<8zd_#e#o!>`1kks{5v~7
z-rSr%->!C7&CjCCCikPd&YwR&- at g7IP_kdn_Sdzp@|>JEpP!$9`+9Tw`LL^RZ*PBn
z`qMw4CCygcCyZt^Jb(Ut_uY3hjnjX<zq7x-{_n4^d-Ydk-Q86hdiDODU8UK-t3E$F
z>)mc!^W(#%rQUC!{rFL_d;4tj{BPgyye(5#R|i at W6&k)iZtW_d(fm(z6wW0u<$2%U
zU7o-D=Z}w%S5^J{Q&|u6$=$s2R@*%_KR3;-`~K$U<_#Mz=*_#or}A=L)r$)YS5<v_
z;wk-es&=?t&5wZ4<$iOePJDD;akaiR?&<Hthp(@TUA^l1`uO`h3K!RYKH4oFx;6Fm
zw0|4?mT%s%<Hy>$JiNSHQ@?e`Ui<j?`0dW^Z+ET|6B8?Yb7SMN;D(s&xsB>-YJT%<
zZoVuzcKrD7 at SW`Za%)yqe}DJ2eQm(|jmgKW_TGE*CTI7Yb*m;$oVb44g-}y7Gc$8@
zb6Z<mL&J;vih+?)#CYca?I`Ab1rMG6u0HQO+bs0z!^7>j&qi<03%$Cp_V={AhgXNM
zU-jxhBXj80*I(1p(x%B?i(}K*)7y5mudmO~*EjU)w%ps-D!3+OGh9D#`rgsX-`{d;
zcV?D6IWf_1`R4}*n^X7OSzF(hw=^;N0`$he+$Br3U;W!u3G{ntDKJ)+`_EtZ_km*6
z=1;|kitBy<v-u}gip{z|RehrZFk#+!wSD3rdxk%o!gjK;)um3mAmDRg6pe<!z=Xh?
Zd{Hij)9*rU?0`i#gQu&X%Q~loCIA$=z%T#+

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-16.png b/tests/reference/transform_and_scale-16.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0d22e6c4ea2e692a0bb90f1d5f236f0de5feffb
GIT binary patch
literal 4433
zcmb_fcTiL9@;)INMS at fT0YOASQF>EAuu+sILJ(<E1e6Yu074+5AVrFzg4B<wpn(u6
zp-7dkbWoa<NDG}HMUayFqW)&S at 6PZ3bLVbmPI5Bm?Cid~`#jHvU(wfM-p9KSf*|Hg
z+83`v5bP}YP20-=uG<FUs^AM at tD|)hqVIhED$k6AAU4FMi|34eljjC+>l*ja8x~9C
zkTp5cipH+Fha=vcJi=hR+m$biQz44WjzeByDzRRzJ&|y`t8TDh+vS2_Lc4tK+uC|&
z=|lqCrwrriCyjW-fzQEA+P$*UazE(S-%IIJe>Jwtt*NwbtV~+W52y at _3APUSx1GNB
zVtE2_2s%BLhJitd7zoZTT!pLMD}7jo0jd4ypSR7K^g;5&LZsdyH=AW1%2}3wJdrCl
zQ0tXWAUvF&Ov4{D827(N_gwyuzW&Yie|0<HFIO{aN;DCoE-tbeu~0;6cZn)0nl$<m
zva&*w_t4mF87z#9gvV5&fog@{88sUzMLm}=S9I+!$oXaS^KOxKN2WEop{PuT07?~1
z!?0p~BB`-an+3ZYl2K3Z>grng8I=6Vi99hrE^_p!%Rq51nT%>If;@yot1|Ud`itC$
zYr{DXXn1b>`}=Qn6U|3QM!e8ya1#;$+$KPL$k6QU?8 at z*&R+{%Uus5q4ZS8f+1ZWy
zFO(}ecV~BH8e|c~$M|5AwL>BMkw}Xox53vs at oGOOh1J#7sg{`1tu}RfvXc8yo_$k}
zMadDG4$NJ2Tc&fe<0ab5t2OmZ(&NWA(mcsN*NNT3fg7$rm#5OOtJigOB55Q<SyW~!
zyrI6Hi<5JVN(DdOTk!bYxij0FD=aDL)|Pq(n1DD$LkRFUruWRq$;yhKI04+&KRP(d
zZ-+v;558adut)G!Mn<Zt-xDS~YY$a5_NJS%*tKsD<0UQ4N-?fiuEZ`$qEJ}`!bDqI
z<(;X{{(duqYYeLXp|_5WH$E2jne8=1p`JZ^HZJSf?vQ^-)mK_ZX0gja{ZOJU&apl=
zIwbX!r>&LM(8oA2qpMdf5P^3vn81y>q6^oNG$gCsQ&};wOghW42wQpHt<6ma_>L91
zel;;QU8`YHH$BNUCuhM3pJ(Tw#Herk;?j(_bx1vO<*>E*(7TL$DAb`d#1;p>5fUQx
zO!FSZQPGS&n1iPnt#5 at fdKekS#V$b}kqHnBpQ3J~A5<LTY<<>t7f)=$9zo&0xm934
zfBu}9m}qU)PtoUQWo6~%<z-`I<L951?P9Gu?0d8dG{8`)kNdfEAL=5xCAcC7-F#Fx
zydMqIR#u|I!#_4RTjbhmn3^Vt?Ssl5P$2V@&*#1tE%cMKh(zK-yEY0nhbjHybjE+x
z#om5A`jCnV$*SC at CKQK*a_u3j^J5Ag=H})O4ioV=0 at rEZYQ*-tn4rkz<=Cd at 5=+!J
zNALaC9uIc+I*}dh?MqZtZlJzAdGbU==lMJNJ<@xt88)|m45yv)tX`SDTTUX8`ds!i
zG4Uz6CHJ`~zR;EAVDwhD^z>ZJu`IoaV(?{=fz8j(4!rlyLJ!X at EL3`pe-hS;{@l|u
zT!N<dlbx at D(9l$UEEXFWxJ^K1C6oM7sKE*>X!g=rTWA4{gjO_vNf5oF at U%_!gNTTT
zw4m+Na&l<UZ=!J at Z^`pUX~un&cW6#f8uArZQYy;JlT}tWQ+Y)uuYlCfN5IM+CP0Gf
zffmkt5D3t-wRLqXL5)w38|`Cax^Vt{LFMN5#=@V+($s^joE;q<wKO!C$KHg6g`u)c
zZYOa|S#e%PQqI)wD$dO{bOvKL16OZfuW1#7NweBA40Lp)lWznp*4-0at7ei?{eBce
zobPRFDJV2QVR>48+y0I`MN$TaNoBFPc1?)}Pw7Dm%Gf^mlN>0#nLmAd3$89LCAIMQ
zx69<GPhXK^4yj;hln?j#y(v}qUTVdt{c@~}1L0(smo~c<fj}3A%1cX2H$2l8=I6KD
zg0|yQQe2C^9ttw#wEtEe at +&LZsTSs~*_<;4b$&~p90z7G{<^xl-rg(pv}=adH8tFl
z775A8{9IgI{QTKnQ~h7R^6~PvCZ9ICa>Zk`o|&4j_d<5O^R*84;U#BB^w4ajLzREn
z3zqDj8K3!ql3N`|TuU%0)XdC`&%)4LLhXX~Uv_F9!*qt|8o_ugC`S0C+`)qfXS#{#
zDRFP*6aqmpsl|zGMl?xk=~gO_z-OBmxqS%UjTZ-HYSee{%FqMlE$O($zb2%nrZ&?<
z8ZPt8uaX6QAX{~}d^?L&q3k(Qn|(ds!ir%a{)4sl<;%*L+1?Djq_ssPGI~v8uCuEv
zGBOfC$M>bBrluy)UOy=x;0=Qg8ivgd=$kihUcUSZuMv6m>Qx@>?oB>{>(4qnN<~FP
z`sOf6Ee^S+ at 87?_qnuJ%S^4qi_r=BZrri%{vojhicgw9vO1x3$&Yct3I#Q*=ys~l6
zvY at bVd%4S?e<D%AIn`DMcPG^gmz0#$lVh3X%5GgHVG+sjck<J1*2_LuIq-%^)YFFH
zd;qw}*wrKF&lXv|+Eo>j0LGY0hzg@{<=lgXvjNDk4LtuaG<5&`*{m-+DF`V*R@%Ba
zP#%PjwWXz{i%WJaFC=wTw5p<_;=W2daa;u|rttE_^1u*BHF3Xv82Fv1_vYHA47($$
zBm@}W4Z0P5or}P$dUkxIP$>3I&;9U-D!#q at X#habXmn&mL}Fs%=H at 0IkI&1?<B~A@
zZ1BX~%<TL3 at 1ZP$+pAyQBP9^N6X8f&`h|x>*dLbE$0%xB+HhqMz07YZaBHQfVqqbN
zM551^E`WE;%*;d$Qgv}KAI8#fl(BI^!20)!(Ia!1jm6Ohfc2o;X7XkL3aD?djo#nG
zVvHi@<W%@B;@{XpQeg7S%gYxk>4EBT`wY_5%CQ at mc=d{((^+5`Fa;=-#L1KYH<$0;
z(LOyp(Vy|bTKa`<Yfm|W;09P`q9v(S>mV|;xmnjWzpTtcTL$-om4gEC=hoa~VJ!i*
zfHgp_>+9>S`A<RF0f&!yQ9y4Mtd2Luhj7Aoz$=G9=<El5*w)<4ui#{?saaov-ALZ}
zR_^~pQBhG at kmtaG*W?%1_7>~t;!-j>D!zX at Vdf7eqcz4)f~yH&Z!!xKiTvC at I5_wR
zWB^y*nv0EPrCI{e2w5r(2Imguhpa~}Y`O=ff)b}t;YEdo$_oJO%<^uA7xoPfmOFhB
zZ*a<+o10Vdng5K55>&VPosBiMH9sSx-hQDziZ4aw8#qW|MMccwNS&vrr at g&>|1f}f
zd!agL=z=az_{foh)faM(7OVBOwPj1KD*YJ*0y8r+IDsD0jh^n1?wOUozP>+ks*s$$
zmnS<an#k^73ngS_^U~x_-l$L&5<2(i9DA(%^_-RD<)1!({yw0}MUk6}OFu#SoFQkt
zWdy!C^^A&`n3lE(?iw2hWj7NSQc!K6!vy6G1Oir_<G=xwq2c03u{6~m18B{c9Ssc)
zx8$Swl;&qhm1=>TYwv7o9vCzD9+1g at 92^|HI@|X$Dr0$R$p}SucU18jYqSI^VW_MG
zbbfw*my2Qy;GgyrW(=%~DKuiy5HCdx&cKkNpCUf(4|A_iG{x1{E?0pn_VfcNno;qo
z%*@nsR-rr0Pfqp%fGI5To-q+x0n`Y at YiJ;*N1%VCY`wT=UHQhmRb}AT>v$`#A%6h2
z2?;!|`ETETEFtPK3Q*Po)6o^+Lw3hZUKjMaw6wHbplRTWzWv(_?oj_)X*-Zbtp-?c
zdcfY<ys11UoO$h at Qz9Z7B)V1u7|Il-hDQgNiY=jmBWhKWI at 8N_({Z?C7VzKlxpwox
z>e3R2mjL9(#$ioeXM{o at B|!Oy_tT6wSuEj8+Ke7OS9HZ at 9}c<&t<h{i;X(N?UAi<p
zeiF7kdVE)}NC5!)$@%$=jok>FFb3UQFaw%3j!}YgI~cAy*)AS2vdJJ1!G%QSBqSv6
z?<HE1ek?6TMn~%d)6+|lu?zjfS2i{_a7H5j7~;N7Z5SI+nrWxe6U{H=IM~?%Lbyru
zJa`K8<@-hY0Rxg6h5=Y?O-)VQlP6b!FnaO?|MI1tsL?Pt3G#?vYtq-Ut*NdS)l1~$
z=2pV~T&}IHrKSa?>R6mTwU{o;8ztw^tgWk?3<mS_TcekF{N~n{WyTtuwOUwb8gv~n
z<s9Gp!NDV=qg|by0QosMIPTxSzrKhJJ2ETUJsd=LC7Y!TN8t&CFHTr+Forw!ShzVn
zJRC%QNk>OVTYE1Od9=Bz62J}6BE+n$6W|2I#l at wh+?|~A`dlQXl)=^2)fFgnW$)>y
zAFO#4T}%Oe+`W4j;9EdIS!JcV4ProKV%(t>{O9E4bougSFuK6U{7|_w*=%FIZ1lrb
zKs(8&(cRhCmnOyiN)FPFjlgG{ZF4Ou0!m)JdR1IpjK_~`Z*5 at xC+;PuLGYNdJ}ni|
zxZ^@QX0tN=g)8!PP7VMTG_^IQ)Z^QEZ*OlPkxJ=o&?!E=V}5jcYkGRRT|>01n_Gqd
z4>ypSmew8^Vw<@Q(d&?}pr8Qc@&Rt{_~*~NzkFF)U6mDLWYq}39U?8|ym at mB1bh7W
zTOx68YHBJo(_8m;SY#w{!C{4 at xo~h;C$(S}hR#S705>3xw4HvTQkA@?KNl1ffck?3
z5?UNIonbqQd2DQ~DPBrlrT`3QoR|UT0S5F3SW;{S*lF%SAfr%Ugy}gwGf|qOV9Rj?
zcmR~d=g*(p+pnBw3LAO+5!unv5htn_5fv2`vtumG%=Y5!6vh#>J=qLw4+l6oIoa85
zfs$}QYiny;TOW=u#(9juvk6WhWWOCN(a)6QLBe3L+}zw~Z#0mvnlS=;50QI?9FD#I
zcyoGg4m<J&sbTm?^JSs3mY3Ie=o;1fm<UbV_HH%UHCzicvDmHAYT(hpzyNTqrRAVh
z<tCmO^DHrO+ElQ~MUm+(SO<f}<V=a(_4W0gomaIINH;3gVpFgG82-i|V{RTPz~g)L
zLk}Lvm~X!fAgf6h859YuZg1Ya0av>8*SXc49Ld}|s7;k+NEhgha3DIv!aN?V1Mcc?
zn+33jeCLR0j}dy$H#<5i2apjkC&@Ion$4l1Z5C+VY9zAX$T#_Ah~N09XC_%IfCj*O
z=~9T;expEvnbA=WpuY|tECISZ)12|Ju%;I5 at 0#SlT9g0(Wq!vMdZ7hr5Wt~?OTYNf
yU0%k%Gl?%1!wez91^%f}06P9%u>5atd+9L!SgyRkdIv`#V3#!XFXo)L4*nMk+Fn=y

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-17.png b/tests/reference/transform_and_scale-17.png
new file mode 100644
index 0000000000000000000000000000000000000000..d839bd92ae14e562aae9ebbf71551c9a67b98aa6
GIT binary patch
literal 2969
zcmeHJYgAHc7e084%uAD55}GwNHkl=5Dqcb-FJuKKIe96CvB2>Psi`TJWolC at S>#=u
za?oX_jA at z|gtErL8)KRm(9j%jDM}itpzt00{?3}e-=FU}YrXrdcddQa-uvw5+549>
zShTk04ov_6wB1fP;{X8S2);|8D&VPbH?;?iM!+ewGoW05er1<F0Dw(cH|HNbV++K?
zexYZjaPB8jP-C)(r+)`&+dasRKY(!}*S1ic at _Wt+sK0@Ej>Uz<!zTXeX7IE!WYVq8
zfzdxbMqVK_A<kM at eo_~{y+4->+p=L3+!OKZ4+MCmMSPH)gIv+eIWLTiwq4vS;tx+x
z3nnM>Bje(}lxH;-pM>1weZlJjTzeG_wLJt!#6KGJ>hN&qm2+&pIw~Y<45|gq8i78I
zY#iQ6YaN2evi*zrfpcWY>ugW%PFiVgZQl^Qx36yt;@-Cf$5n5BgV<#N`FHc(74y%-
z0ae~++wLk2F+E2y7Is?_FTr${C8I5=y2csGf;)Hau;Z8Vj5azx)7oHfZ%-ZjBmEZt
zu$?ZTs<nZNCXq-);`kl?1Fo*FCIz086BF2Y1n>(?CszJNETS%A(CAj_O#cB>Q-A8G
zH%S|GNr8c-0Z8BztXY#CEf$>lzIR~Y1!eTriM<QmXyfsTiN1I5E(^3e>@Dzn2E|_%
z78VvK`Nl{JcRET(N9UZE7t8ng$3?ya&9yj-1|^tIa5gY30<mFXVKFf=SFhF&hwG-c
zm^Vpo3dP|eA=MNVaQXC-Yew>>?N(M+DaUu$2`lKDYAT1aXIgX}Y67f)jRwuPudFVA
z(%Xj}TDx5m1cSkBY;3a4 at d|OB=yCVdJVzNmd<!VKgdAZo7-Y_xm3}dRXrpl5k4bx*
z6XaV^t+V!k7Q&F?_7$eC5CVP0u8NMkc=2L?r5}99jtJYr!NI|xprCW<>bqbjtmF8G
zsA*=le_LCd at 3Tw1wuc9@&3x|X=K7pF*C!N)h^fE_gq|eVB5+}G(Lu31*4&I*J2d5O
z)+Z8)dVA?bMf at c$H|;Q0)94rH=((Z6{{Fz~K`Zk63un$qxT?BZT3R)=wV)qORaKQp
zB>MUJ>9p2hyC8d8D5M*Xzcw}sN!1C`cV2vye0I38Sw7boCam>)LD{_-nxn9E0(cfw
z&EdhpGP<DY>f)`qhd93dVn<)a`G+{p>cZXcS|GRi6mC*d(#f)df&#atL;g+P`=v{w
z>+WPz!0oW11oWcgCc6srqvly0#S?m-!*#{cR+W2NEfBJx#%;g8md4D?%%03Y3tPdX
zalRQ2RioqJ*5Nf2XW;B%>Ng=RDcb7l>W|J$J at 5CApJy*wg$aJcC+j31-)`>jc~XDt
z*1snwO9`HU9!$r(r)I2`=CJm;XO!}yt}f<PA^h%k^YGx{0E`cTlvAI1ar!N at u&@w}
zL^eiqU}R?gR3{AV%zGXu{g{`R*VWZUY|rvReV6E#+cX?7H&kzFX(?ZtHwIy3gmHI|
zK^hvy-hf$E=-V8{oH}(X(zX!%lW}ZqZEYr#S#(WS<}wDk-TFb~YI|L=3RZ!I?^L-L
zy!ryRD`%9?T at Q@+U|*>Ku9;k7{a at C6>@90(Xz)x^;eOu&DJ?CvE9@%!l985{Mx(it
z_X4~ltFRZ(o<$IX8)N3NZ|HytaTyv~{U(ILx_Kk_^^ZS0A{IA^oQpj$Jtl?`<>lr0
zYb)a&9UVcs8oLf#phv(&%bS|0-H%;p_6sL4n9hNL9L2JOa<%8}Tb!2{n#=7#P}MSA
zi|wLkp&CiDiF|Ui4H6mqdCG&?E0IXbS<SY#w!VIT?1=G`clW7F%u{IGmjr}?maSoi
zm;Y7bnoN4KOeT|62l7ps+swQrul3xg_*K+1fRcn9$;i-Q_D1rL_5byk1mxHyBGIL|
zyY7A5DUp1tm}bhX#B;*M>q#LA2`?MeH*Nc#InkN#<>B#&F8grT99w8>i9)@9_l`+#
zm~WOpW$1DDo<0;DGx|zBA(GEH1~RGp=cx9qgCI*~JPQsM+5z?z%ct6Py|3hQ`9oaf
zL`P6)Xvd#_8o*%nandKaV33C){guzZM!0NR(>^W$nL9E<IDbCBIZd8*@O)Q+%_47K
z(GYkI8meMt at +@LsqML!vKzQBtmGNx7ofoPC-U!K at u<jGUed6*~*+A7r7Z(?)R4SX8
znwom#l&WK7`y1Kn=+UkE`bKuq9c?hk>6a9)SLKC`YAV@>{N7rl(dYwTA?>6f4WVk4
z7wQAX(|{7Lg9WfI);T<-YcQGI&+<)AOPiui<yTZxoWp4B+Wi1hgi4Top6-cp!2S3m
z at y)v2RDYY=k~zZqz!E^XrYWkGPo4-GW5_qRV?2?-DT70uqm<Xvk)ffpvxC)E`C-Ei
zS9;)Djse>WW-`*#uS7)|+C*Fu)`t1`_`t0~mt`}oQspyX%aN;<<;Fn?sG|NEZH=Ua
zgoK!RV%SLn$v|iMZ{7nmZD--;ijtt*++2{H$zM_6plZ=V;a=l#m`s=b<59Mta59RD
z at ZR225%pkQNp- at rh~0_%b62&V2Ki#KSpRjrzeqb)8#Rsls7_*x?va4f5+5I*fD+Y5
zPJ+Y$SxLv~qLv9B9v+u3SGA7u+S~V#)}!!N(&6c@@o{lfl!))3oL!PDL6w_W2Z`D1
zq<idhm)$)5;X@|D7g$1E)eNg1%reI}$1lyTOWneFJF1BF^yz7Q`yA-q6#MBh(@7<#
zfXB)Vs2X at z?zMJ}(?26!p|aWR?w>tHmN9cfsm9j^8a6^s^C(;+BO_y~<VOFDczU{C
zPrSAynvbZzb9Wv6PkkOR7~#?az~m?7NLE%BC<AzoCL5HPbhve#Jp&wp{5;D8`iqd;
zEq at 1&c$-Co<58hdoUaS_Ym65Ekq)o&?hx>Ry_ZNngZJ;>@9XQ!w<gQLfJ7{X^7-%W
z<8N6W;N&wsc<`WlkIIYG(L_*+K%}Oo3WY*x{3D at 2kdl(}Y831&)a4Jia39mH-w$xE
zU)L;Ar|3TLdKAcKh@%^a!(%X*^qtjUnsIEgSnTBFlzHN{U_az^+f8K?M{n_l>V_2X
zlLEn!BS%WsTjE*lblPBbV7&d#5WF7O)4NG?b6O(gCDh<wjagazBep*|EUcp5S`x>e
zP;7QQ?xsGwxI#tYpP(Uxt)+h at 5`5<}o+#rq0F%pV|FQ!8<6iXt%YWV%|95qf8=LDJ
VdND&N`rxh&xVd1RD~}Uy{s)v;9>V|t

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-18.png b/tests/reference/transform_and_scale-18.png
new file mode 100644
index 0000000000000000000000000000000000000000..f20bdd0d1eef3c3c78bd08b1405934e682eaf9cc
GIT binary patch
literal 1684
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(P{7mE
z#WAE}&fB~886v;sjy;^2;wr*zxF{h}QR?!_sjeF?_<0nEuw>^lmEC$GBId|1_HQK%
zclO3kF+rcD3!0h~CV44`DK1KAS+Fre=($*R{*H=srN)Kd*Xi5%Z=I=ndi&20vuDno
zsoVbV$7TkjuV1Se65g`#9K?#G?CXDj-Mc at lcFyZv5B{(8J>VJ`61sI3zt-tb)7u$e
zZRF;~uJ2a-iH(oyV^?iFrES~Lw_32^bSt;`z5Vt3w`{r6o7oVR#bRS&VPR}+Y-d;Z
z`r6vd%l*sq)e@#=$uRG){Jd<{s(=6f8K<9{lKS)K=jZQwS=YF|ogCrq?LFVFR;w#1
zAz{JA6?@tFN&<SB^6%`pSQR+!>5(HxHm9Fo7qc^H+S17p7qm^8?5e-ze1FDpZGqc?
zu&5t*uh_B0MMTV)F{9$=r&RN0j9Du;GU at B+<lNiybN_Z3tCANVA0MA9#~HC!O1oh7
zy^|+Trfs$~H{V|P_?Wu?yqce%mS%5e%)RnkF5{^|#qmDb?(Xi?NIrgke}Dh-M1uu;
z<M+-?OiNp)T+EOip#NZZ`TKtxQcFs<6dz{zdgVszyZ7(y>;6;(iuAfAS61%aYF+#H
z*VnvWwk^TQtZ`9MQgU*6doyB1{{H>_eH|~`mhkr~*MLE?+k|}s+x`-v)jHnxCm3v>
zOtcbM!`y#`v1+N?f!o{j|0kY4-Y;)$#S`G)+hAYw<HKRGY@;vJk`p+>^dBg at _sy{?
z&3bzN=g&%WPG|nB96NMQyZ6i8-C4YR{rmg>O$`hRUS3-Ijt6L4KI^(wuO1$54-Gwg
z?%cL*G5czEatAZ64*D(e<HN(lu7Pjv?A-kI`GpGs?dnWnYrk>Dh#dX%r{?4Q;0yY3
zdtMxiIFNOP<Hw_;-PhN}YIh}_o~9cbYFq#Bj-<|uwNi}rK%d^(S?n5UGW%@W=E at Hb
z4sHa4b!XYO1oHj;_}u?qUG4kzQ&Y>HO1 at h=_xY+-VR376{`_3dIQOX&A4k~xx(92c
zxBq*by+HjH>m95Af4*OL at c)r1%CYTR@`IHtSNhI2+o{M|wc?)Mmn&DUbPB7BiHnDC
zTNAx~-DPFQ)mx{j7xD1&-rZOG`#>Y}T}fd4-r9Yk*X{9>laqgcfB*iNiG!{w6VUrt
zSBKx;mMbkU|NixB?bDksX2k5R+FE^>(H<B&_qONXzjG%hG?ZV?MnXm=CN9pd{$I^>
zHRfBZ1V8Mp{%)3Y<3g3#my3(t)6>({)zxdav)G0xKS(~_$IHhDO7yFM0O$fUBcn at u
zPd03O_0|cPZ2Eh8rljty`}=FQd45#g!tJl-9$B^O)!p6Y)!*Ocn$2Fkc=6ic$h*>f
zKX%@VSAKhI>+7$tudkhPe_!qH^z-xbdRW&S)4%Jt1E_fB%$a_ at Ojn-PC2*)=plkoy
z>aIr}%s<V=bMV$5Bjyj*o0*&q7)R0Y4}lH!jDbaFlRHCrRe;qDgQu&X%Q~loCIBJ*
BmRA4(

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-19.png b/tests/reference/transform_and_scale-19.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c87c487aa8212b28b5884b9428d3de770865a8e
GIT binary patch
literal 4089
zcmeHKX;jkN`lhU`oH836Qad)ClXH$aV5vn(n3?62L+KI4*~BRU%hb~;wJh_5A*Dx5
zGn`OU!y!#G2TTN1QZzLO#4#{M<iETBkN4aU_xs(f#r`eU;@!Xfyzlco?|aX|9wxI>
zc_#z{kvV_P))4~PbP7B#Y~KvNH!dEx0Nb`3aF{Jb{PXjITJRVGkt3hCJ?#|poHrC3
zv<EG2Tzoc=KbcXU<T75g%UX)k(@}opz!i-<2kx9c+_Wp#W$cXfX2&fL9DcP`*f at 1#
z`=b`89mx>Xj+cl1%g#Kqk^gk5(eadx{7#BP7<;aJx$Q8gGnB29uN`8wF<fHR*=bs5
z&ZS2q>u-MltWcoKfPD158z%vwsBV(DBd>Q*@t?N841P2~>jJwPDpY^ql7wQjowvMC
z>22P&<<S3cw;InELr4M8TwWtCo6LPVd{=x_(3s%8MSA<$f7=MZj@;j`o1BuuHC9qm
zf)Y!n at q9jiadA;#<e|gr$~MWyu<>~O$B*Zzdn0b%WW1gmrq*GE0+tufQd3h?M at Q$x
ziQdt$mX?;o$Bxkm=Fu#&hm4F&Q-eJQgQ4YEGO}T|wiHSdVpX&u60XpQR-Ca#3qiln
z=;)|@L4|vDNPBzx&2OCpwdg<(508gglJOI%DkfDF5^b`hyIc0hyq at pJhpnxxS3{0l
zb4NqQWB!&^vru&SP<Xk3?A0(_futoEb#!!;cv4Yb5#kL|bBf%>zw}<(RQU=8yptzS
zR)=zAT|C|0-LL*!f)D$>q?HZ*=_JI!z<}z~y{KD)Syzhx=Vu1U%^}%^|60F+i~aiR
z)aN`{NXXp!>N24_N~HVNr!6fbBSR3ZYh9?oyDfLXbl1WmE<X;pu{uc#eERh1wpopJ
ztoXKsq!|j{O)zIshDqEDf9YKZfT;3c;z<C2e0Y{U!HoZXn%)!|R~J6k`aVhO7y|Ef
z`7- at m`s>%P-Rt9PIP;;)<_E{k;Ek!NsrmW&o1_qQEghYZ+KBM*a5`}wyaR3(`I*bF
z7YqjCM0{r$brhzKp+xZp{a`YPXQY}?PQ8+WUkr7)3iG8kRplq-Rjk~{Q(7rK&g5%_
zuU?gs&>qod1m<Yu`SbT^lQ&Hdpt{!9)`-}(cD$^VRG`0q=?y4${RfX-?c?K<h<nK9
zK_jOeTwGk}xV;JrK12qZ>eYaKd=#-1W05E+7gaY at Sy{=!i7{9#7LBf~v`3@)lSEwo
zjSqhsV}r9LBxT1ZC)qfCrDXl^uPp%TqlXWh61p{=$$R$h-MeQ`zht9uW!|eg#6!h+
zWQOrt9k;G;QVnOhZr0J(z9QjW%^oVaNK`mx?~jlA*7+=uMdr^i;BR8Vb5YUpKr;h_
z<&TdJF?C*LHhVYg<-~lw=O=MhLqo$8yE^gw`SVM8XSaSyB7!o0_)sr+(6EvS0QIa2
zdUl<{b!nYk#w;{R3NAw~UAnY&>sH-&3wPWya&n--gOq3vCi>Hp-%zvw{I at ke*9*gE
z3{!7e^&R^*F){QuJkOH-p!-F|0c*Bo<Gp_^W+eT3Y30Q#lEH}+;15Vd^oU+e(;X0Y
zYaT2;M4+Uc-sWS4cDizfv0<|UDoV7}p^Li8;u{4r`?*(k at 7`S%%288NDty}4*SBZS
z9*e#<f@%1Tj;Gov=5%EJ_g=VM17kbYUOuc567%ulFU`p^6{Kw0L<Yo##qaBL%B*FE
zH;;_a>Q$lf{n(w_8XCDG+9%A)P_$rWmeYW<x3`CD%Be%+0dgp&Vb}Zj at 0qyp1`aVh
zTS&7KzdB;z*Le<s!2Eb~b_)Gxg05G6{NmR$M%kdeGcs~z?Ra(9gt7ypVTX?#kx_?U
zqxL9ov+6~NMpM*1V<+|sV at Y@KZV~RH%B*7>lo{@%3(szF+Ki2STBU`jh4T$!>|{6L
zD)tM&@cy5F_5}fEIKOd2&ks{m27Dv;5j4Dod%aVdAAu6j$mq?7?+<Jrs6aAatn?LL
z#)(DMM!bj`08uZU&XE0ia&D at Yt}fB?mcW2!ag#S_RN12^E$l80j)xLOL8WBwp|cOR
zZ)5;igxBA(xK|1wiOX at +nwpxK{SV39`FG3RjkhIsxV*BLFBO$LI5{~vIyzpv_T|Ot
z#Ns1B1106uC?vR at UEfPTJ3BjHU*EH5lg$n>@YhQ@^ChTmK9}Vl*WUj47_tkW`Q!-&
z&1EJ8T8y=&6V1>w&A2gfGnZdPAH<WCl3#8UXitC6OX-+!tiU#KHUf|Qq3vGv+#=So
zOE67Gj=oRAlZF~_;!$H|g3XjfNKlXy28A~c>Mxy|@-LvDjQj2%crO5d^(pH83BOLo
zX1zGU>_7t!SGjPzc?2lvhqgAWVcUp^2q3wQpG-oBJKNjO!{Nd;Ziz&Q>SwfQx_~$g
z^wm6_XoRSXp3lK#qdn#aD+3p at 6qB#Z^&55_G;uCE^kimc=G{9BeqFEL139bp9$r)+
zp84&5`}Q|IlJV2MM}&}=mOtc~Q*(s{IgVDb%s0-PBu2`7+EDm!k${2*j1KcK#cQ6P
z&>Jm(0OK&B>YE-vj+*$Cd23~^61!%T%SU$idHW94q6O{_bUJ;q^O+Cg=5mF at OSyh1
zgo(zCe|*IJ4v5Ss3y+Om1ujsGbAw;gaR$J<RWzqGF&K=?qzg4+qt=Z}3kwUe%ijo4
zOx!^E at 5diRm8)4eQ~=Xkc<_WXUtN;NjROgVYXb8DnlbmKh6WX0;9&{&leK8B*^K5v
zCu{Xm(ax|e9gn^_Lm;n!Ow33do90E3K{ZQM!{*{Na3upqco57(rn{p<>Xpff6HB~m
z4ivYs{;ex}Y;24zmbZ(Ec`Mp>qJe{3U78rtEhLkx)D2XU<@fJr&EjjxFc>VGR1?3t
z1VAsEpch=k?YVek#B1Nz1PL-^Wu7BmY*Vi$smiwfrSDT5(7+LMOB&QH<DBwCEVm#L
z?kgvYOm;w}e>yIUYn1(}sL0WL9e at dB$a$tB(nH-mD#+D!AX!FbO~7O8bH21rN6H>B
zb?CyAVyAjuj_9s}_noZ{PD)CWQPg`eVDu&dx4zg0Ou8sZCreXTH{FWAroQWIg04rc
zldEf?AGk2j88(}#W*#;BV{wd0p#~%9 at 0*)JvKT?alqMk7g6JuB^?Wr4%Xa*Qhg3{%
z8!OZOO-oA}>lOpZE%0&#cCJlWDOWq=S?+sJd19t^gXtbx_;`JncFQJq=<O=G1Z`JW
zSLP1{ol;(24lr at 2>+9<W1O%XrJXjUw<$XU7LZi`wy7kMBj+=9CPK8}Au&*R`k&BDJ
zPy#N)H37j;?5g0OvI*!{9eLu5-h-jKXtp@<``pm2#jhV!%Ya7ik_=LZm>)<>P*IHg
zKK1Cy6JLba+pyDws`k##2We?lCC at T5^XD$0#CoR2#!PHX?9zBU37HuW<<w(@Zn44^
ziC7CY;pw{pczBl1P?-;mZlrnqxM%$086jrBP8OVSA*86REF35>D*6p~ZE2!I{YU4%
zzqe1&&uwx}7z$Y#X-ed2x}<!9r5*Te*oAE|jhgLGSaf%DbF;O*yH-|}+|&jA#dqlA
z=UMtWove=9x6113oY&4J;5gR~(18$d&DET_zwc+}$Yk=nck3V^sH6Hg{!Dgg{VL!z
z3Lgb9PmoMhQC6O1`CXt};5OnLb1Zapx|ONm>WtUU7oVG6qK<>k%K+K^+%TZG*tKG}
zf<p8A_Z#cWwA|cWphJC3W>Itx8ndy!dOBoX4?)MKnrLeW1I}o_kq)<33j6){d<^7y
zPL3K_rS?%#0^n>s{x<0ZZ9ruei<kwV0mTCcY1`aQA`I&+;ZL>NX*8Chww6}V at Vi*e
ztHq^hvKQ!DAm-Z2HbVqR9s5(JCg?0yW(N!cnZ*aas_N^Z-Y;GU3?3uKFAd+CccqWD
zrn<k2DHA>NZs2%<#>2%$aXc87s$3Zv5GbaV1IhsTO0=@u;c6YbU3CFgI-7NKZ+cr^
za?`$QHX$Qpcd1+BXf&uKseM|CMyNgs=epQs62^2;t(IKkRyiYD;e<})eW)cPkx1Nf
zm&s`|L^1|+a&4(9th8X;0)<Zryy{ab$=9vq^IKY52Z<)VhFxQehQhzosA7R!VqR|U
zPAMrQEl2h6F|M3x6qotNQr#D+covJ at m>a4~kyTY*S59a1x at k0BAc7))V>2_5IL0-z
zwe%emzfdrc1M>3Mt;&iOll6h53k^hqKzP(e=<45VHWqF@*TXbFw6w&pPGm8gMW6`;
zw1ou+2LlsYnHvJZ%_7D>g4&l{kC@&C+M;;D0P_C*`%+R;z}v4~x)jc3Y7=Rb5j8*;
z%;SG708zV`ZOps90%uRxZnUa|_7e%MxWpV&%l_>%vt%QI>&D&PgGWcALl%f;6wj&9
z{4G6x|2QtlMIVw}S%eV&ZRBW{hL{=r$0_3<WBu>Pe;&#Hhs%F~i&%ovmyye|JE{R@
PdC2)Q_O at he?>qkoaYN9Q

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-20.png b/tests/reference/transform_and_scale-20.png
new file mode 100644
index 0000000000000000000000000000000000000000..6129c6ae9dd42597eb3e5c9d6306b7a618b6ca6f
GIT binary patch
literal 2717
zcmeHJdo+~m9v&2JHJn{e#B5sGZEd%lhE&Fo6r#~_X;hfum>CWs6Juy*Na`q;MLUyZ
zBn`=J3p32kP)Nq8<Q4{%J2NAfiMcpm`>(UkALrlm&;H)EzVBV at Ti^5h-sgRu=l5ou
zN4SBt4Yffa5ZJ at r)dvJpa|Y(p9qPbc<!ufF9-5(^ZmyuM at 8dDI{2mCT?c?Ek(l7DR
z(x_*YAI79}d8^>pfJ<jH20A7VhBi0oJwcx?gQAz)+PqwLygQe*b8mD<xW3(fmrHt;
zf3rQ4HfE3&K4zd1nyG1d?W0XY!@>Ep2ZH%2`gte%MJ{s!qQ19**;3 at mpANOil;jII
zT3;Ux+C>l&r at cBY#((bzg=>4sbU@!`b{PES3_rz2UGwITHv2PE)IzrH+F^=zHc-=O
z`&t%E3Pttx59e&DT`vP8O>k)Ep at TxckR%&J`ugJ2Wv>1(W6A9712LDsRne{8R9042
zSGTM!$#~w;aYnu4+T?D- at 94jGvu>)`I*?;;`};B2ci|1spT7YcJ0`78w5DMh*q(=S
zNy|7mJ1589&W_$Ux7ZWIUSgapJWBVesHv$r+ at d&A;3cFvvY$UUhv;ajQ+S`A_RUdI
zWMWiQ)Y^Q%E=<b5Ns^LUm`vGF-9Ng*UOami-hSt=x$Zw3?81^Kq?0d;ii&pXTUS+A
z_v|7sx9iJg68riaH*Vl)#EumX1a9Rl49ZPG5vT6IyscX}3{=efp@~kPQp(2d>%(my
z{v_Rbm}3Kn)40T+cMms2^mSwz1$pk9j7=Qpk?ci at rOC5$vafHSR4N^)zHGKl0em<(
zFpxkX;B at n;R3?KV0yq<gBqz&-MGhw9Z<Aj93cvXbGurIJ0<=CaFK=@*Nxj3)TBeqh
znF(=75C~wscRN4xB*`=?qTJ!c30Ut6$tl-8uqigABXi&IWq%}c9N+60y^-x8wyAGz
zZB-}~vBx;!@1CesDsHmum)#kgo12cw>t0+9;L?SEo6vPqps~O&cjX-{M--j7Hv2YX
zkC}1OYzdDCm&wf{uUv^=Q#X$@iH(Vo01E-zkJ{jbkM5ay(*T(K%h6YN*3iR_Z1f{h
z7 at +`RYe-rj#?`wWjS+F;rrtE;XIQuE0;=eAdUdr`5dw#D_g>#zsAVUil9w9GX-RLu
z<gZ<33xl=ZzufC}+EO at 3I8b6`NlD3-5k|qqh=@4=LA9~0f&9C8{8gOH&)mX-YIQju
zSiFP7*kg&jn|c_<NxV9ZD`P~DvAnolVegCjS5{Wac~xs9ibTZ4GSICz0xa|Q<(w%M
zACZ5~apJ{JwtWE;mOjQ$3kuLSO_=WdZukZC!zuVgA}ku~@9%GctP#MXVqyqs;#Uir
z^+iq;^6Znkx;nwPw{Oqm@%YoH+m}Cg_Ea$#3G*qPot-Tk(?(FXOq5(d{^Cfzf8~XO
zVLqSl?WD8~sf6N$iys at i1;!M`@|`<(S}1S%tFN!}O-)T59UZZZfA*WpCabfvvzM2z
z5{!fEvFGCB8w;8vV%KjuBrG0c%>ul}rxjCF8=u<mE-Wlilxu^|`_ChhOp<)Pf`E>S
z60D&D17RWejh0E2#KdFJ*<c;Um64+`SfHO at 1Aa!hGSj<Nhyyh}jDu+<>_PXgxRjjt
z at aTGU9M4m(j{rsjz?+{w4I6%eNl#Cw%_s*Wq}xzHoz1lcH#awpR6d~U;$(3%ur(`r
z4mS8{!9FPVsZYf?WsB5iZvTlG91;?OjUA}ENFtG{tE;gLfKlSg^agLsI~(#q=Qv!0
z9r<}ArbRhj7$fZM)lGMqySCY5KfX$$05&BOi5Lt95XjL8!_f~PzMvY2D_Cf<Y>WU@
zuVsr_i7-{GmPsIji~a7I*hv at Yf>?~8`wUl(TC$p&5=9(hL2FxE8z5{yb32Mk!D6u}
z#BY56gwyIe=`P~;*OopuV%OifnPBqMS|1nQMbI?8rJW{}2Nyj&JPzr_nJSga($Z4j
zm?@&@7T8Fz$d>R%xXA>pqP`a%85s%v?sbw at WohY4?r)sc_nzCgZ>P)zq|Q;hJ!f-s
zb48+HD1J{6+hA#8;&A~+Rb0VhC2gscd&*ji$(s=rO3P&$AR)`WcU=!ySy|zFY1I`K
z6;)L*;@7YPxkErDz%@Yp^ax}mdz54BL<$>L^X%Eb+Cu>etpYYf6vKm%NZI6V6YC(>
z>grsdmaef^d0%^bI~WWemS3O$@GBI+&VhY(*D2PXn17Ao1L6`ZOT74mvG~E!X1tcB
zW;AQA?4W0U(@EyQxiqSE(7a|2<aped*FQ2L8LpvqL!~+Jj{^hi>mxB{yE9x5OkQYY
zGH<(-05N7Nml!*dN4aiXz+wTG34jDmfSjo7GzK<8sA{~s*D6WEmF=|*unA#mq&nmA
zD<5R}sgb_c8Z^7e3#U$<vM~^Z9S4LnJw0tgQPfpcS>k<hKon<XW$`3h>Zu$KXK94#
zt+H$=*q+wP6eTTmnH4WCE<zv>ODikz?U(oO-=7f{6~^xEIb>ncZ3%HqYN)NPEia#8
zj*|<49Qr!dZJO&IEGq6~CoElJdIAuY?9WrbQK|N}wt9Mc(&J|X<(!I^9UUY(;?yaP
zEnNlD(8!3eI23Z7u2ZHlnDs}m3mSkNGtR;PphQ{|opv?FSzAm9dVD~Gde$XsA=E^D
yLw;i>^uPPz|7ewezWUFD!=G&YKiC+efY1r+uexr98UyD|kjH6+YmE!~#=ik_w$i)+

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-21.png b/tests/reference/transform_and_scale-21.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d3ebd1950db9926fd3dcfca0c3e29bc8de2aeb9
GIT binary patch
literal 1507
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(0|V;}
zPZ!6KiaBp at +h>Sm${c at q|IV=$35sq8y{)Y?+#CgSws<PL%of&;=JsY?y+nZfzru}(
z8<E-^Nr}md98Dcd?@Asyq@=K^sY&To+B%5{G5_M at xkcsi?<-f$oohb1yqn+n{WD+V
z&##>rXV(4PuFmkMmZ>cPD-zb8|L^U)rS)lY*{AZ1>%!`V3YO>I-a7C2t;|`^?$2Xd
zBiesKz~_KKjwn;!tYw+Ac9*~JldCJ<W^8X?|MAh$i{)*Hmn~nuzw+AL88akgf4;lB
z`yuQ4`2F|x-rJge-TZpv|EX7ZGQYpM`T3Df;n1&dZf<@z_xJbr{OA3AeYfV`-uCwC
z>FMS<H#Y3qb4NDp>YF!j%JnNgJUDnTq2T$sxergAoo)WV at W!J at k5-+Lcj}e?aC*A_
z>Q|SRde673UA1cG&Yhi|ovW<s{`@FEKHs)_+wMfWnjafhZOgs=?QUYfy#2aW$;bOj
z+rPiNyL#0_-yN6#E-HS0uJ@;)!u1`D=g*!Ey*g3Zeb?coOP98`w$7Y6lV9GB=lGZ3
zf8RNN|NQ)X=+|#=Z!gPCOHZG at Y-j1~YyIo)e7$K|^P?ctw&KGA>zrB3?!V_}YnC?8
z)6vz18fstvucoMIQ}tb2v-v>wv$M0c|D3pTB_woj)z_ at b%F5Qn=7R}8egS<Ix)tcO
zcLh~dRj;qD4K4lj<RmcA`o1zM+|*jrxIT7wSSZk7o7!I`p{Bl@%irIVie%%zeqi$C
z$^P^0)&hOFJ^%i`L#EYx at 4b+pU;ge+Wa#g2Z(sAxx2X&Y{aaW6=cMzNjZAePAGwCk
zwJKe;D)0Wjy*qZ?c>T34z5Voqhst06{Q1+!%%1gR^~-mKyE128Umt({g!zs5eKnG@
z-#$J*?%dADyT0b at tE+MAx2K+-R;b2r-?)+Ko!EicBKLl|wX3wl*Oe^4wl>;)7mwW4
zZEyem{cWCmtK{LKR(aPOCcd|~rJtJ<xxel&FfrWUU;qEb#l;sH=gnETYSz^6oaNOE
zFK-XJ#eMetDL);KZ`1$HJQ$|_Bfp5fE#X?bz!_PICeBeb8Uh0p0)P2db3QurY56H-
QV5!aE>FVdQ&MBb at 00UfAp8x;=

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-22.png b/tests/reference/transform_and_scale-22.png
new file mode 100644
index 0000000000000000000000000000000000000000..0da908ae0265a17f297cba55e1f44494deae6575
GIT binary patch
literal 4368
zcmbW52{e at b+s9|f_Si~@ERz-qSt|RWlBkr(WXtjl$r7 at SWh_&vsE8~>whYE&oicW2
zERpO<)<GkoCk7eDKK?&?o^#&kegE%!{^$KUhdK9s&wby&>$<+5>wAg3e$9aQw}Zby
zAQ0Y5h8IjB5a?O(d4ZD!{AL=<!oeSQ<Q0PpknNqH*QDGy2xM>br3>fG0#a$CE=GdW
z6ZKwB{4$4h734%7$(lsFnjJ;#lL@#e_quP;{-E6%>GHfkg(je{%3TT&Zbs|)CoUfo
zrP*=Hvggo$L_9TwLW?-9iVWbUd#e1096}Wt*j6T%qVsIKWh>N{w_|RWK9w?*oOb78
zWQcYPHzw7$I|u?vmxQtk9I-!(+{0t|90QHqr*ue}h5hKodQ20iNK8`ZcHaP>CoJ8I
zhs*p0lyCO_KdxX`kDNS at K&VA!g+0Z=<GR_H84mpa?mi;_*F*l(lXsnsoxWf3_4PG1
zHMO#`GBy2F={3Q_uAIX5QCB&~rY>}AeR)Qgxti7EEUxBp3tZ*u>gw&ictw$Pp#!rK
zQFsN>H#ax;cz11WtY{&xfpzuj)ytO;JDpYc7n&5OlS4M1Uz}L|IZ;L!ij9qJ;@Lza
zWf$r6)5%7t8qz>nbkfZ3Doc_;PksCLEh2&w$(|ma<UKb=vPK~M#v31f`t+%-t!-+`
zDW$W2hG>}P(AC+gaxluo#AJA2_UA+kw<teVDt>UlXWcS{wt$+}<p|b!lb`QItST;^
z``Y|0Cnslea<al>w8TQ5m26 at n2==3zvSBr|d1u>!9sYzmU;GqTyU at t}b9c?x(xdxa
zLl&s#0s{kGT>fl+cEHWeO-oD5UDdi<O_R}q<Y0xbjGz}>ltd2iuA7AxzgJMSG&PHF
zRhin@*nrnw{?X?)P^_Y+#$V~f{t-K_h0gB%GdLvV$dMx{uXdJ|wKWB-;bD2<_BT<`
zfUZhy`;<<`_ns`U-QHZ|3~h9IW at ZEO?UEn)V0}#GF>tnja4-PG<LlS2FJHbaFejk=
z{a5G+OA|pDEaOs~bd`fry^oPaJ&0>wUS45g$39wuoVk&7FQ(^xb8}91c6LtAF==V?
z>epvDcGdt+WvJ&^Z523-$Kx~FHEL^X1@(V27|~HteK=lj?%tW@^Y0-6hm at i7BUMBK
zLNl$)`ON#KCTDZE at F!39pF9+99ev+Vb2OZ5zqE0BYD|n$$oi5?FFs0K<K at gT==g|0
zLVi9!OoxYyOH{?x%)(+2Z0_NM2TMVub~XfrdCZ?}WO&%>=FY;)JhdgjG`t;=NF=DS
z%a_}-FU1812ao)$!sPDTzc4pi^X%EP_O>?hUXfJuynNR(E0|7j!0N*IyC?i&JdaJX
zE`pumL8h~_o0^*g(P(Z_R_gumt4`MuWd#KV)z#J6+21;nPlG}@dGaL5ma$pKe^ZcT
z3zL-8K{IAcOG`oRB_$=1kxr*rKgu-_V at t7qzP@G%L_&PL;DH0?W at e=o6)P}egT07$
z&=QSOu at Q8ip0S5V9b^VuQCe1pFf&Wl at WF#{R#y-2^RXj7Lc at +hSxH_S##&Eto71}6
z$y)w%BUL^$6x!U}JS1cbBuBxf+6>gOt!<b5d1 at Z-7f)jJ4ND;*p at f746&00%Vw)PD
zX}%k=n6P(IP&fbSdq&^=N7AykEqNi2FWjqFO`)~M9gp5{u&KP4xxL|_;nN{3tR+IN
zIxbBGngq&y=k+BO?46l=##y}QT8iq)W5<rEsQA5qE_xnR0G~3{I2}IZTE;h3<JIj9
za^tHh*|P`Es|;NUQ+VnORr4CSB#&czeE$O`Qdq<Z$#M-S+sb}5lB+U1JKXvH_;I}E
z54LnJWi&N0QCNz?#ls_5B2ljw!KDs|-}-<8j}E`fv9K4(qMB at UzMR$GP#wj#i^3+m
zNFj0Y*<jOkAmEUq#l^)E3azuVv#|vd!1)sj0;HAE>rH-G*e<K6NT}OpYDr69Tor-v
zOX=8qdd`zQ6o!0+R^r*1ywU$8=ni8k^V|}`!uXT)Tb^g-cdOjeT2dJqPR|D!aBkNQ
zJM$Y4k8h|VM#^i07#mI<GCWIAXJ<bu%@nDuso7xAD1c#1CKF^PG&Gb%HbV4iqZ!Wh
zy;)gV=Eb*81S{3kuR7MJrKN$=SsQ->oBL8n$j`^goI7{Ule{+7Uu3PPr)OhZD0A7*
zZ at F7{dv^7-jEwWougwZA-H`R;vvR&yuC(LypXo4HCny!3*7CvyeXegUm}}D+ggU0C
zvhrIpnLKUXUu;t#F`^T=_zm!LSF*oD3Dy;JvqMDfZtuMOAi(FPr6oLG8jEOcZ3TE8
z&H$mR`J(|MdETfVfk1HZiGQDFQ}Y=4zUC8)lev;8- at _~{DiS&+Qttzjq^M|&7SF`V
zOtie{?&x^_{JAf4?ami+2v*S!6*y67Ni3aAQS<ywl!vO(v?q9OM8jR<#ECpSe(FQ)
zk+QNf0(m{35mwMw?M_j}ssYBhv=<c>{Z(1p%L8`9i;sE5SXfv9T3A?FeSCb<V3d&W
zAEmHF%Z7%AVQ+u`ikJpSx}H&emsa;5f5=Qvs<`z#hglW%ck65v64VyO1eDB>EU2+g
zl&`NkVYt#Oi|+mwbPwYUouaM4AD>US53M~vgK5~i{|(*mpn~1YBZm*)B-j>hxe$kL
z7FhvJejXgOu&`L2#M-$Q2nYy-^RO?7BU#eVxV$V6W^M*z%d9Ir{K&5td$J6Ylan1<
zqHW6WCeyFp!7A9uIx1nN_wHW+;VzqOY&@URIaSNZ!P>TUb)lG-TAhf=oletOeFKBs
z++6NoF-lEOFJ4}wHav_wZd_e!-;2NMGu83u3{6Kz=S$c&smEFHSL6eJe9lv>+bqG!
zWM*d0lQ-r7L~q&JpE<}c39oeS!KE7u at bU6$-=m(jvU(L03z5_xyqlexntI$g-SPJA
zN8#a1>kp_ at YGY$#mca{QLBY=h11U!Mg at pwGG7!S&qNgu at R)V}(ygT>dcjAy4qVG>%
zZT}CXuhHUX2~D&2>2!M8<bW-@)9ctx-O3t?L*YpnVo6EqBoHi!m(-2{n2Tilul_}v
zSzaRiY%=c-W3krL-mr-Sey2<P;rI!)jfHW&w-2G|o?lr}>Gpf-i*}T><93?D9x)gU
zRF$tNCMAL&0K at TXQ)HtW_v_<7p&ab&43(_C7z=UMf0(66jmR?eiif*~yu8r|RVa_4
zQT at yS;XsK5MDH;3&e1!lno-xXSDjPE#R`gwin_YGFc^$vtNQ^x1pS_2%~C#e_xA1E
z1}`K}%E{GuO<cTjBW?nfsF|j4=8P|RIPp$*S4W4Dp&@k+RbMBiZjV3!{#D&>Pi$+u
zjO8d)AF1)5A0web_Z_S9nFj5m!kv=%>Xj^t2Nc2 at qTi#!bF|tI=oqvSQvXbcYgxK(
zSZKoowv6D#$Wf02>O4SJBdnf7CAX)$()6m=YMPO2oAmCJ!tDSm9HA<h?JI+lt3b^)
zDB2H80!}7~G-j_P!oyCo{o;drnV%1i%gV|Ms0e@?4Y5*a3|=u+^|1Xn1#gd3dWnjP
z5}i7q0-3 at KGK-36U1?ee6m8+C*})>~iqc_sRSJ+>P{@)fCNv^Y^;6!B+^OyiLecW_
z at +h!j6wf-^%nW5_rlz`@F*lkL7uP#9v{vUO)8<*Xr3$RTm_aKs7BdzxG$EmdGAc07
z?FHKmSsi~8(l-M>&CF~xaKOGzPP)|GLLgp<YaITik9&cERpqsgtuKY-Zt_gov;%n5
z26z#~ph_Z07IGjRUp~9}ng}KRd at n}w*i&yG!BtsR1%Ui1i^~CtES=ox91o%JCrOwz
zMT*F$UZGS^s4le(2Duf%70?v1Z+MY}USZ#U4|2n(-UoRoB~1k;(R~eT7b?0bmS#6w
z`|BXsu4{W$Rn<ed1j5cP1B=bw5{1DO{}OTIBkr=v{{DWzOWo~F;&#R7&z~I~9fA3E
z-nJ}tj@{)@M^1cu;z at 2kzWy%#fxf=ZB;_M=a&BvjlfW1Pp+<A7&Z5u`4ih<7uzZqm
zi|f~^Nt5$R-rqie1AkFceDB^jzy!_C-lYW<c6D`)jEn$hEEaV!ENmNtfglh&u8%?~
zx>?Y^c~0M?gh<@l+IqA at rAGYz(4`)O<JVGU6ckX*+))p;lulq`ftSlzQLuPJ-CFr_
zV5cxRQ?@2(G{Di!`1p7!?I9zR_%-_U0YO3d^63Vsv9$NPt)bzE$o<E?y}bc^**h#u
z;$OdhZLGUh`sR(2lG1gm5~N!ypl*74dZqb*U7<}4BR3;dR$jg~cx?yCqaOa^VscM$
zz_11f<FBQ?ij936wERQa;eCVzglf{%!7-Q6=>$A+O(1;=@JE~;3ij}>u at Q&Ef#*Fw
z<Daosf0i&3 at GWm(2AB%GamF0^1q3c$@do;f48f0tRT8khJ at qkvJB3um;yqwcf~FWr
zOHrUoM|Zg3)81|P6bHo7vMk0ow<-wn;2NY*Hb^UDSB#C-l8q#Gmvme!^6m9ghZ2)8
zLi%3Oy?0gThlta_XKA5kEh_Jg$Kcf<B5>uF9gz4Zce+(jfQ<yY$Vf=&`}pzDw;Pa3
zz<6`J5QK at zTMz(}?ffR_X;#;-$Hc_E at tSzw@&d-aCJ#CI`<+Y&2L}M?0DzM4 at IBc1
z4jPRHsxtl5?Y4?9p>C=v`XPrQvARbzKwC&m3|$%Z2mQpa%L382u`&-Dw+HZD`uh3`
z6`!FCzD?VFvosnBMH>dwK$MtT^+<sYqHlP3xMQ~y17|!A;|)0IZ}VZFfItbj5txC1
zW2_!gXmKI}i`WU=CV&xmpL at L!h%t3c?kz4W3y?i*Yk9!jHn90NdtIyJ`c#T1-YB`m
zZ9rkVMvqklUSW4RPo at ogw<|-p4$uxr2}`$*ii!e_K3yjy=-fFdzZ&af*QDY{st2Ro
z`U^q%wRUy!adO_X&B=Gw(|ebXD46O at QG)~Ki at noKmQq&_pp?4<vtemzslf3bRkH=a
z`A$QGs&Qz_w5?(+$c<`zN(7V=7=N}lH}O|f at cFKxq2w524me2K%KR5aM=i+X at U_1t
z<RrpJFE6iMx7f6&!!Ne}w3M`c`bkds{{Pl2{yACyr$g`moXK~-DK at -cNKoIaR~-Up
zWBhuNzi)VXc1EK+hzF7`fd1d6`oAyzw<G`m<0Qi_0r8zIBxX7Z{>1^gq<`%~@p=0P
F{{ncfV@&`6

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-23.png b/tests/reference/transform_and_scale-23.png
new file mode 100644
index 0000000000000000000000000000000000000000..462453067f7da56e4ded0aab570eba88d8bf43f4
GIT binary patch
literal 2893
zcmeHJX*iqd8vY_ehhn;D)jo|{s+P8?eQT?vs%nI)s-<cvD%C;k1V>E|8H}w(8buhY
z$+1kWA(;#vRobehq69&RMr^SqIA43tpL1R3%ys^pf9L+L>wCT*@AW>*d*Ao_J#uug
zm6DK`002PhGSb=!03cT2_tHKQ at V$HOq!}2*e6HA91AAYd5=vzb07!~lwm$D1Rm>gp
zut!CzP?r;#2<Y>YE;-zp&I9khJ0EafOQc<0(hZ^Rp7HII^ikL$y>Qg>1^u9mn92M%
zzMhYdAy`4z?CtG8=H~l`Jiz}_ltGD<glGRAsr~TRwPvH}{h2<KiDumOEA0er25OEs
zTeLU1wx;O5yKMurQWsd71HkG&xo<PD5Zb>D#odM*LUxu5?{_UP?97cM2+hVVNlI2$
zHZL!4cAUyy-P%bA>yT7!J`KC&<~A}g;JYYQSXj7E4tW6c>_6=JuZg<Cb=N}icsvve
zRnF9a!{M?}h at 2@`cJsGXNf#HF4;5FRS62t2(d&YpOl5PsPG7)=ND(nrlqNbO<oR21
z7KCeBc~73qFGro!*493GGXIp at Z?E^4<1p0LNFIqqk`@(7vQm}XZ*x5RE`l-s1*F{9
zZ{D2J(%M?0%M6n|ijo5%LKQC7L)Z1eSH#E1AJ5)gAa^9wyfqI?q|pu0pPC{ThKN at R
zUib8TBZo{mY9bL*KT_d<H at VZ5(Ve3a;OBR>*yz1~z1z8C*zW_$RJ$q~jrQD?EZ^Eo
z^IqEB5p=C$TFv$J$aQsfEiH`x?;siWrW2 at 22kysO*5X)e*G2eER;gQ0fgZs)Og&vc
z%YXsd+hP-JDCox6v6cw;Mzlvuc-4nM{}bX%$qjqreZ9SSi})5N4lPAoM at I)d5o2Rx
z1w*u1^vZOm<*pF|k(>OFBn-xvt`~;MiNfVqU?80Fv-9%u3JzX~<xyN69kX(BP$<-)
zeWFgMwXv0tNB9v&im6{Q`Z6TF(}x+q;bCiQYoxfy;cylgEn?R{w?(h!>$v-G)c{Xd
zE~vmeS<B1>0e73fF!mMMNVRO_jekx8JhYY{X8!s>{krC14v(jz9D>1MK&q_F^ynxZ
zr2f$WwTM}pLq!Jam!9iO)jfIghvr-PSH)GexL6!N|87zul#69Xv2YwtP$_IzssZZR
z6ngvAk at Q!r<tSlu;=ug$fV8SqL*@k)lkh*x3ooXfYSl5qsx=IEKYRA<#wi0%@S8rU
zRZ6##2YFbqy+GC`$}1 at 3ISJOe3YH0NP8{LZYVku at Ij$Rf#m;X1^GMn5(WO4TsfPXI
zlH8W)Rdon7knZRAmCE+9M`OShp5(~BV&g74JxxZN*o9LFFe^5VBn>a%&0}At!bPH#
zx!A^gBXxc~`5H2jT*kS$;EP|70t<u4LC?0n1M6OWYe^=Pne_p0Wh{kD(_1fJzRc5h
zCAl~1b{i`Lr+jBM*IIe)v77-d7CX~od+t+n7)Yk;cF|@}tyGsbms#HWbNrYWiifDk
z2G<D^Nw;kL$=QIPR4fy`y-P@>#YuXaT~$p at O<mm?;=tf at R~?nZ)cOYK;@q609jM$(
z$Fuc1g#GBo4L(19d%m)3sIAS6IDj{etid0o{@4IbSei(33Zf;$94hPE+T!RBrR=K8
zY%}HGkGDiz(ef)EfT#{OK%W|f6gqL(ghT^nkix_0MrK=d7 at sr9=kvYdmQ$TLzYcrW
zW9$HUzx2mVy$w)M21iCqOOLa{%I<gUtpEP#Q0)z{$Tv|^SmzHG5)^M*GETwpx{Hf>
zGj1*$Zu<$nF;X7 at Hq{n1SbgW!Pb1vo30QdwhPtz}gTvua7535d#Da`~Te`!b!itKD
z4m}c`7nv^~8+~+0LqbwgM%iq0VAY at q7n6j58(Zn;FvT6z4qomn at I5EiPxtlLxc0Po
zEw0No7bq|6mNhz(exmuz(8NT^NHlO)|Jc%0XFBK(g0>ekGc*2dND0lCN+c5BD*q^!
z<*yhdBKkqv$j~sdx9}Vc2CI53hCRadm;=SeVBBP}t&bl_?-Uake}z+Ehns{L6b-T<
z$gXMKHSTER26xoe*%|R*%9>SHHZ?W1BiLY4Vuu-9fZFX@)gf}nE-0ASmb;s*?z5mP
zf;F^axQqZo{Q97)S1;alxaAv&S-}$lba-Gujz2p)o1dTWP>7fxr^JFj+96!&;dSh_
z2Y#rqQl%~;vcwpWH2S2YW_hkjf^bv7>)?eNWw2Sxn;L|;x_H65qvl$#Av4NMIb8#`
zw4b||r03OMle-c_8Ew3u=tOpUJsFBXAmqGec%MHvgjxe{%aoSDF7lkn?c1Cm-Pvym
z<fdPgvUC{`g`+hJ38KMGNVU at 3A6m!s3}msV-%B?&HQmq}92&w*{+3#4fVWKC1qW+a
zbt(Ob+Zjddbc2jfG-bT4t&NbdUDeVOGg$3%;>3xr at 8=vf!<VNzK at kguap)ePJPkty
z*+?Y%ffL_Y91H#mh4yo%rh+$5&eCPj5Tw%C03T2yp+>h*sGPh!zqs+>`jNW&dc*tU
ziqdIE^*rzKvj7|am4&~o&h`ce25y1V5NvOkzQ615Kbvvv>@D4bU+EBJpD$IcpeHXU
z=gy!e5FRKVH{VZOUtgalS5;Tvto2D9$p$j=FjOTaC2?s*<gR=g{XEr5{xLH(VQZ!U
zyn;&K&rzvX$Ft?y=kr`WqbF%VhJ)#ZTfP4XcOC2psrGYDPT1#<rx!2n6QUX{ZDQE?
z$Yff{gX)J&o}P}*i|5Z5xZJC>dw|XDl`!uPCX>N13Fs at 1GE3NAn->a&6%`d}GAcJM
zRIqCHo=&gOjUD_UcV^<=4tN)gp(7FUA!xL&rlwK+cKFZkB;apDk{;I$;PA5A+S<xW
zHn)+9F;b*ZC=n46AfG)vJg)bOtA4{xxncelbVBXOz5DH3{<m*Wf<7V;2<Veb&0*{e
zJsk)VbY*vUcTj4m(-MFO0}|ltYmYaH7#Mzx7srZmv6h<?DWHw0CrTBRi}qhM^)BkQ
zAy7L+4Gp29aBnMp5wSlF3Ll!^SrEuoRo$NyHsdV9I`(-x-;wyp+Ys#RI%kSl9c_Jw
z^?oVj<M!6}1NJ_!Ki}=YNcjIHe|jGO`|$|$;)nW=5FMs7!T)36 at +Ajr(gpA2zXP0y
B7LWh{

literal 0
HcmV?d00001

diff --git a/tests/reference/transform_and_scale-24.png b/tests/reference/transform_and_scale-24.png
new file mode 100644
index 0000000000000000000000000000000000000000..18e2d29ba8241e165d65fe07b817e566025d3155
GIT binary patch
literal 1603
zcmeAS at N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P at Hb9Ck$=lt9;Xep2*t>i(0|V<1
zPZ!6KiaBrZ+GmJl${c?<a|erJmw;|dg6gplB}PF<?xRkpHw#2tNB<WoY7`Mm7v^4V
zB39P4;(Ct0hGve7b?>4C#Xz$J^+fZV+G528?9caE9{<XHKG^q|OWoP_^7L<aZ&p3q
zeqUSR@{JYj4BPw;2>4(_Yrfw9|L4_t`>uc1zjr-I-^Ap+;r*He%zx|ZXT-05{p&w3
z^OTKD&IXL=XhT!O^5x6#@2kCiN5f%dQ^Wl|mBkMZH11mWde^*}Gb_Kpi!DxOJgmX7
z<No{noE#lJy}thb{dIq<{{Q>iJY%*r-;ey%>jz3><9C&0=H{-w|9<=Jx6bW+rY2$r
zJqy1%<!5cb{rvp=|G&PzesKKl?d|qeUsg1(Y*;A5VpFlz#@4p>_qVsk>E}$$gbda+
zO~1g+&3$`YZggCnUG=w|*z3W;!TRz0a`KEG?B-(HSM at b({dMU(r)JHc|Nqa=&kql`
z-#yYKc<Yo~pSXV9o&ELuufP8LA+te=_4<Lwk00O7EB}1Fv$K<(Uv7s)o1hlQj at xg$
z#OgFz8To%E$Ua!ESttGSehcs7pc>)q at 9*x;W}kihfX9@#M^>#`b@?UFv`2o+gDZtp
zd#0RccHYn=`UB{J=H{(ix7N>RsoU4okbiGaWa!n+>F4|8Y^^McUte1*Yh7kyByP~M
zDf_`$?R!_RUOjp8q;~kap5ETGXV01%NPMUTy34&!X63%UnI=2_zu^<>33EKKK5nm+
zOwErE3s<c=-Y;)%BxtauslohxI54QzuX`Q5+%K{*aSIpIyxFs(V`F7yfH4rWqu}9_
zlase49^??sUwTL9+r7Qjy*?~FXWjTX!uCupdVg>4e~ZnVHhpStV>~6o{^#Z8<!a9u
zwk at zoC|~>F`a>y+rb;Dt7VYT9-+${?UtP7|vhGiXGbo0+D{^vjYHRnddmXkqH1z7F
zOP3xnNOU$e0AnDg_IKZ*yzRH&f0wtb*|Bfmy&E|P%0*cA?AY<6-}w2txxW`4W=I9P
za^AeWJiY{OE~dDss8y at 7l9C=hKHh&fZ~NW6-zGvmVFz_r%(X6`XHobF=qO;^&Q{-F
z^YhYykOKjy-YMEwep<3>6)>&rumAt=%gf8V%id<CX(ebxR|;p8fxx%+ex at m(u4)Oa
zsbJk#_V(7s<l|vsVI|zk;oHP_UCq+f(FqB?`m&_PP^c&7X4t8?_2v~i*XG$)=PYWO
zsQu64;gcsR`|s~Bets??_{+g&_Sq8L5^e{zsy;qCy8r*0tH4CHzwq&~PoIjIgBhJQ
zIexsmySulSF{hRPi?c!hmBs|7HY~_F_sNGh+CNOM8t?yW_e!!s_mhxR6Q{%|8vY^h
am({S8Yth=sXXU_Jfx*+&&t;ucLK6VAK93s!

literal 0
HcmV?d00001

diff --git a/tests/reference/weston-banner.png b/tests/reference/weston-banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..234e16eb15808b5506ef150e6ccb8b769a87b8a8
GIT binary patch
literal 3355
zcmY*ccRZWx7f<aL6|1$0QL1K)2EEc44ZU_17ext4Nkc1&7U32_dyPx%nze2aD at Lsv
zts*Fj+UwS)C^cgI-v0Ib+|T=Yp7VL1^*-l(&pF at oMq8L6IWGxa0)arB#zqEKfcykB
zC>smV3tA at 41A@i%cccO6{MVDyT$BimT=X&e!xsc%=l#_#fYLJsfI(Kgv8f^JJOkqe
zsB{UNK^8D1`pDW2ukZc%u{#bAyn;abPu(Bl-BA+$kMI}?q_L?5O39rS1mYkV8z8I$
zCN|%AnOJwxyIPkkHW=7*dnew#y)J3#f>5|pFcA at BOm+wx@~kn?w=y*uR at a=5;I^-M
zblXCoUij0nY{!sfp!i5?g592bP!d~TYJ`Z=yRM!T-ni9Xm2%XqvOyq at 3$HMoy)l2v
zfc{C#9M}3myEPlQgklCUiCpfwF6qs1nJCOg?BERVm}hC9r%Cakqr-is`vcFwOko2O
zBA5LuVInv{-UR<=p$}uArvVbF4`!l6QhHTy-P+JJcXARVA;C;R`y;lvANXg_^yEoa
zfmT*lF4f~8keizu8wUrfXCMFX@^WJn`rbX>r at p?GxM}V1hzNvaf`qg*Q$j+5k-2$S
zf)vtcxnER%;ONIP`T;ANSoE`E99#U)KYBQvlDZIQdq)R17z`p12y%RvN}Za8w6wHf
zzDpcpx<M-=)%cOfJh_GUVT?|sO7wu3ytkvHh{BcLKZP%*1=6mHha5uuoGtmfN65Ah
zoV=;_-I1KasmC5D6gZ=A2|7DojgFRJv(9R2x<y~k&(D{ZkO+l&vHKI<1Y_MdXPPsj
z@>Wz^CD^2Ob+eL4ByK%6E&r{l()GCwIYmXk at hh!o$2X$m;?NTvBe at oGp9b@h(cP%0
zbcJbZuA`Fd=H_Pg7MCYAJ+*Hsa6PVnttCgz$lhLvzqw`{TOUlX?Oi7liD{NsL2GMk
zDypjUQ0K>w6{$M6`3$jB^*bd5@%+Ik8qEaw@;F+yPKp<T@$%|eSt%ZvobafIz~SP8
zf`W(Zl-8yhMO7&D&y$lN?0D6O#f_~?FWW)~;O8f4Q at NEnEO~>Nx$ob<*QyPuhj(`y
z7jaoq#&r7JsP>l5&gKQoEG&{*T1O>>Y)b2yP#tbM{eD(Og$fFdrjHs*FcB|{wpY4!
zH9;NGM`SX2XXeHCHjH|I$>pocPMuV*u`Dgd1ciV5q@<*{1qGw~`^{e1ySYi3T;pY6
zU`SmDcD&JbA&<nQrwcXhd=#dk0V`v?y^Dr;czJi)*_G?dGW2poohU?WdA~qYAD at cT
z^OBP5nc99aP#glBGl=n-dw;>e(6G%#B_}_hk#Ke-tK{7B`s^$OxS*7R0tcwVZ{4P_
z9OR;zQTb^28V4um`0!h+>z<yTU?HI%$5#BR)!NAf)e9DK0#n<L%8T0D!~fc<sd>e!
zgfBQaxVW^mb9J~#Rae*S0bzYqk?-o&{NiHF=)i<0RZ>}*i%O;9Ch at 9OE<)j8y`LN7
z`qK`Q3Gs!6*Os(jeb5^%b3m^0BjNVs5$zF(ZMoyaz4s=Yb2NgDJW1>nht$^5iEeF$
z-~YJ#t+)H|uzq-5 at d|rMX{j`q*sX25+HREO?<q<JJ;~iD6bAFj%?UX2 at 5ID3w1|L!
zQBQC0gQXYSa~CYhBPK2J@!+B1;YG`rY=7QHK?U<0TIgFk<p__CkADeY7hRyqFod?X
zA!=%CCkAXw?ZSZN^ait{mu)UCyVEVf8R>pO1 at K6~-MF<Okg$L9r9whNzBUD_<>loC
zO|<y=`C+iww?j;b+fSaT)_TuwL7lCw`9e;1kW9?XmaB1MzqND0Pv*uo5{xPc=OIyf
zMh%`35fQ$l&;fT5X&IS_AxJp*%jl@~=1T0b+sHrnqh7trPZrEbPZyXCEL=GtoyGTl
zqdj}n>=aj7S;_o(HYVnhU75{C>gh^;+^wa*fFRoAhA^clJA3rtYvtk-6549^ThGs4
zEq2BEGVUb1_a;N2(7*2vui|OP{(gQM8hWxaG7weOgh5Dbs>wBvy}dgGT10WNT;bHr
zj1$V;J(o=OLQIT$ROgnL#~KgNXa+7WIkxWD$=bitnL%?~(~V+_QsH0|GqZ)2!Tfk5
zY3t*<*^u8?&2SQ8g$qeZeDY<Djl!p=r%F1laxnp$)Uk?ZoA#bxvK|=#fh`~?nA>A!
zYU(aluND~@DUsOi$g*fH&tF(rxG~1c%>3|RYuY-P4O0JPk;SIWKH`*qkY88l?=(5;
zS~+)iN`L)=8glxa(rZ`k!C5^7)6n=fxN;GqBES*wqwi+r<4MhrrZ?o|0<I+oU;SW{
zn5Nx{)zmK<9v@(3Vfj2d>H$AEI6%6(N{*I4V28uuFP`h`Gip?=;<bDDw at GKIg*iE(
z8#bjbL$cSd`7Cr^EOl()q5s^}H#Z+>sv&oyTu*{6`M9~c=lull7Vtc6$V^LPVPR>4
zf)QW~J3FJY!wc_$^znLa%@ZdvqoO7Ty+;JFwaWK1G2uv7_`~&l9R}4<SGPD4L0)%W
z<?8CkuMWu+-GNR&G=HNVQC|<^<L7U~YSL>S02fHLv<EY#u(O)!M9D$Nc=eiMh$dbi
zS5`1VCp%qVBruhBKHGDM?7FsdcE&$yv4Y9U&SnK8V`G!H+2ziyX1}cfSQtt3d_qC7
zUn|0%e!xxDKO}%+tK*gTiBhVns>KvaS4%KmZg!Fz$d?^NE`9O{RB6r?RbC$NwhRy0
zmH;TEWI$M0xP)KTc5{D9ILbgW>`s2}kiEUVi;92?aDg97rk+fh&k{w>vjGHIG&4BQ
zPY=Z3H8w84g@<;9wP$6C?HwHG{I)gIybhh?zj7rqQPw=Kq~xM_(014`t2rCu{(b&u
zn-kxj7-GtSh*6zQ0Wa*cbUyN514x0Upgz30i?Rc3&CJY98_iR0JsHw90yM%&l&3Z*
z_hQuZs8oJNM#e8OKq4%7eO*I?v=;ijS&WyL7lXm%OjV7qaar=^T9r78DYqQvbwPP}
zczm{|w19AT9V>s3<dnYDL%LC1T)b_Z(Sw4 at k?t0Doc|brJEf??V4nn{<YG)}W`uuk
zO}`2cXOb_YP`C;T3Z7j}6^=^L?)0SUQO5KsWB2a)VX+F<@}$#Sy1HV@&3ilr`r6vs
zpTB;EQI0zjC-2+XM3QYOP|;qG>iPBvcHIU_cDA at pxnuY1wSI=matsdVkv!!N9nWOQ
zgr;%G$jE%TjbLlLIUDqne(+rlVT_ZwY+zuZqWu;y-1FwFnDC;)LMzS<6C$7nv at v8^
zpAg_WTxbdlK2}#t#N+XYoqarpgR5sXK#pvfKHV at 14AiPV-yE@Zena}~Z$KV#?M+s+
zo&X?!vho>%lgPq<q6HW^I0ys4%FW(XRO~Bzafc1z>#GJt`%U!e{O^#A%uE{QZ-51}
zKQPS%A3RtJnVz181 at 6A>Y66)3p~p=GI6f^+Yq^%skQ-2d=J92B_o at 2Lo4$-sx at ZBP
znqM3g$Ljjl`e=~V0sjxFr7ViSUo6`KYLfcEABB_sPPVpP^$PN&9`whIq@?gMXTlrR
zr2$<!2mEv|u{TImRP<}58>`xIcx0rctn701TFvu)&yDHEl)Ke-3NXUiNuFA~A+=ny
zS=r0pG4AziiyKOw)QJ+9HF?CM#Cm0YopBp>d!^W6DG!d-6h1qnd)GNs>+9<S<;O<#
zd!U}N1VD<4VtZRu<aT<zZvkwR;}Z}UM*{wN_wHQ*e|f+vXqJWLWug=^c5bt7ws4{o
zqwd-jD;lu;#=pXM*{rj(^R{F{PF>wq5{dMy(yBhX2WI+rX=&kGigU=qbACR)IRJeD
z5s^+;G@`Ci$5k`K7>h0K9fJc(-b)Dt47m!;zLO8JA^Vw8UbXky;$FqXEbTonwJMPY
z7*}_4OSf;ngV-F>H#)L2>foIK;6a((?u_Qet>ZVos at C}}Oinj{hGgv#$?gkBU&PI;
zIOwMbvv3mkIInZi4)gBrZl;pP3q3FscBV=2+qZA#8a6xKve_zRtm8|X6)|8)Ja#Ls
zI&>;%g==o-S<HCp--bx!;=wGTi~hY84(GDxvvhQP4RBEBhYt-RCLUF&Zl0v%<OM*%
zC&xb*5+zc4E$!^;<ya|(C5X`TS40 at gQE1oBW&gH@)Kr0RB2f)daTG%^q5o(-{V9BQ
zxX4vgQ<Fm`vo9_#rlzOs`S_?vN=n899#C4UfI^{E8d1wH%N*+T$Ri8K`|I at qJCb;9
z(Rc6Osc34l0Oir#oJ-Sg&y8PfP-CxHRaMm#lRiM&oUD`5&=_ek#8g7wcgF?n&a%$m
zirWTypDaJl_IV%1d7t_)AK29G|5xoDbLy9YnM02MOlKY~6YAa_({lv%H-7!27#o at y
Jl<T?t`9B15c9Q at A

literal 0
HcmV?d00001

diff --git a/tests/transform-and-scale-shot-test.c b/tests/transform-and-scale-shot-test.c
new file mode 100644
index 00000000..67a8b5d4
--- /dev/null
+++ b/tests/transform-and-scale-shot-test.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright © 2017 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include "weston-test-client-helper.h"
+
+char *server_parameters = "--use-pixman --width=320 --height=240"
+	" --shell=weston-test-desktop-shell.so";
+
+static void
+fill_image(pixman_image_t *dstimage, pixman_image_t *srcimage,
+           const int width, const int height)
+{
+	pixman_image_composite32(PIXMAN_OP_SRC,
+				 srcimage, /* src */
+				 NULL, /* mask */
+				 dstimage, /* dst */
+				 0, 0, /* src x,y */
+				 0, 0, /* mask x,y */
+				 0, 0, /* dst x,y */
+				 width, height);
+}
+
+static struct buffer *
+surface_commit_png(struct client *client,
+                   struct wl_surface *surface,
+                   const char *fname)
+{
+	struct buffer *buf;
+	pixman_image_t *srcimage = load_image_from_png(fname);
+	int srcwidth, srcheight;
+
+	assert(srcimage);
+
+	srcwidth = pixman_image_get_width(srcimage);
+	srcheight = pixman_image_get_height(srcimage);
+
+	buf = create_shm_buffer_a8r8g8b8(client, srcwidth, srcheight);
+
+	fill_image(buf->image, srcimage, srcwidth, srcheight);
+	wl_surface_attach(surface, buf->proxy, 0, 0);
+	wl_surface_damage(surface, 0, 0, srcwidth, srcheight);
+	wl_surface_commit(surface);
+
+	return buf;
+}
+
+TEST(transform_and_scale)
+{
+	const char *test_name = get_test_name();
+	struct client *client;
+	struct wl_surface *surf;
+	struct buffer *buf;
+	struct rectangle clip = { 0, 0, 320, 240 };
+	int fail = 0;
+	int xform, scale;
+	int seq;
+	char bannerpath[256];
+
+	sprintf(bannerpath, "%s/weston-banner.png",
+	        getenv("WESTON_TEST_REFERENCE_PATH"));
+
+	client = create_client_and_test_surface(10, 10, 300, 220);
+	assert(client);
+
+	/* iterate over all transform and scale combinations */
+	surf = client->surface->wl_surface;
+	for (xform = WL_OUTPUT_TRANSFORM_NORMAL;
+	     xform <= WL_OUTPUT_TRANSFORM_FLIPPED_270;
+	     xform++) {
+		for (scale = 1; scale <= 3; scale++) {
+			seq = (xform * 3) + scale;
+			wl_surface_set_buffer_transform(surf, xform);
+			wl_surface_set_buffer_scale(surf, scale);
+			buf = surface_commit_png(client, surf, bannerpath);
+			fail += check_screen(client, test_name,
+					     seq, &clip, seq);
+			buffer_destroy(buf);
+		}
+	}
+
+	assert(fail == 0);
+
+}
+
-- 
2.11.0



More information about the wayland-devel mailing list