Code: Select all
convert rose: \( -size 70x46 xc:red \) \( -compose Blend -define compose:args=50% -composite \) red.png

So far so good. But now add a seemingly innocuous "-flatten" at the end, and the result changes unexpectedly:
Code: Select all
convert rose: \( -size 70x46 xc:red \) \( -compose Blend -define compose:args=50% -composite \) -flatten flat.png

Apparently, the "-flatten" operation is affected by the "-compose Blend" setting, even though that setting was placed inside a pair of parenthesis. Explicitly resetting "-compose" to its default value "Over" before flattening, fixes it:
Code: Select all
convert rose: \( -size 70x46 xc:red \) \( -compose Blend -define compose:args=50% -composite \) -compose Over -flatten over.png

Why is this happening?
I thought parenthesis can be used to limit the scope of settings/flags to only those operations inside the same parenthesis?