So, it looks like when cairo is scaled without converting to a rendernode, it works right by rendering the smaller bitmap, but when it's done with "transform: scale(0.03)" on top of bitmap, it goes wrong.
This is the child node which is later scaled (and rendered wrong). bad.node
This is the child node which was scaled as snapshot (and rendered right). good.node
This is the snapshot, which got appended the child node (bad.node) and then scaled (and rendered wrong).parent_bad.node
Clarified the description a bit, please close if you confirm that this is intended behavior.
Example (In Rust, sorry): https://gitlab.com/Voker57/gtktest/-/tree/313c0da35c613f1b5b354475803c3ae279484f20
It can be seen if both GSK color node and Cairo node are added with the same coordinates: the cairo line and color node scale differently, cairo line does not start in the proper position and is moved out of the rect a bit:
It gets worse as scale becomes smaller.
the cairo line and color node scale the same, the way it works if snapshot is scaled before converting to node
gtk 4.7.2 (debian experimental)
Do you mean that line being off-center and outside of own bonds is normal?
Example (In Rust, sorry): https://gitlab.com/Voker57/gtktest/-/tree/313c0da35c613f1b5b354475803c3ae279484f20
It can be seen if both GSK color node and Cairo node are added with the same coordinates: the cairo line and color node scale differently, cairo line does not start in the proper position and is moved out of the rect a bit:
It gets worse as scale becomes smaller.
the cairo line and color node scale the same, the way it works if snapshot is scaled before converting to node
gtk 4.7.2 (debian experimental)