I'm throwing out my latest standard answer (or so it feels): Read-Modify-Write issue.
To test if this is the case insert a PAUSE 10 or whatever between the individual PortX.Y = LED.Z

Or try something like
Code:
TempByteA VAR BYTE
TempByteA.1 = LED.1
TempByteA.2 = LED.2
'etc
PortA = TempByteA
'etc
/Henrik.