The spaces before `and' and after `blue:' are removed. This is probably due to the fact that the space removal mechanism does not recognize that fo:retrieve-marker elements may generate text.
Whitespace/linefeed handling should run after rebinding the retrieved marker content in order to get it right. I personally still think it should be integrated into break position computation, with something like a "whitespace state" held in the layout context.
J.Pietschmann