Without tests, I can only guess, but I think it's more likely that this matrix transform should be applied before the world->device transform.
Apart from questions of whether this is correct behavior, the patch looks good to me.
I have written a graphical test application to test this behaviour, and it shows the same results under Windows7 and Wine with this patch. There are the tests I've added for GdipMeasureDriverString+matrix, but they don't pass for not various not related reasons.
It doesn't look to me like any of the tests are checking the order. An obvious way to do that would be to sheer or rotate with one and scale X/Y differently with the other.