I fully agre4e with mark, if by any chance possible avoid it to modify "send to report" parts as it will be less robust and hard to debug.
That is what I would think about the behaviour you see in your code snippet:
Properties( 3, {Fill Color( 3 )}, Item ID( "A", 1 ) ),
Properties( 2, {Fill Color( 5 )}, Item ID( "B", 1 ) ),
Properties( 1, {Fill Color( 4 )}, Item ID( "C", 1 ) ),
Properties( 0, {Fill Color( 8 )}, Item ID( "D", 1 ) )
// compared to
Properties( 1, {Fill Color( 3 )}, Item ID( "A", 1 ) ),
Properties( 2, {Fill Color( 5 )}, Item ID( "B", 1 ) ),
Properties( 3, {Fill Color( 4 )}, Item ID( "C", 1 ) ),
Properties( 4, {Fill Color( 8 )}, Item ID( "D", 1 ) )
In the properties call you have always the "Item ID" included. This is a clear identifier which is stronger than the order at the beginning. I'm pretty sure if you remove the identifier, you will see a change in the color
Properties( 3, {Fill Color( 3 )} ),
Properties( 2, {Fill Color( 5 )}),
Properties( 1, {Fill Color( 4 )}),
Properties( 0, {Fill Color( 8 )})
// compared to
Properties( 0, {Fill Color( 3 )}, Item ID( "A", 1 ) ),
Properties( 1, {Fill Color( 5 )}, Item ID( "B", 1 ) ),
Properties( 2, {Fill Color( 4 )}, Item ID( "C", 1 ) ),
Properties( 3, {Fill Color( 8 )}, Item ID( "D", 1 ) )
Once more: Avoid playing with these if possible. Just one change in a variable reducing the levels might have an impact.
/****NeverStopLearning****/