Das ist nach deinem Code "normal". Du setzt die neuen Daten ja schon, bevor du weitershiftest. Dieser kurze Moment bis weitergeschiftet wird, reicht schon, um die LEDs zum Glimmen zu bringen.
Normalerweise wird dieses Output Enable/Update/Speichern/wie es auch immer genannt wird vor dem Zuweisen deaktiviert wird. Sind alle Daten geschrieben, wird wieder an der Leitung gezupft und alle Daten werden übernommen.

Jetzt machst du's ja so:
Code:
     Portd = neuer Wert
       Toggle Schieben
       Toggle Schieben
       Toggle Speichern
       Toggle Speichern
       Waitms 2
Probiers mal so:
Code:
       Toggle Speichern
     Portd = Wert zuweisen
       Toggle Schieben
       Toggle Schieben
       Toggle Speichern
       Waitms 2
Dann müsste das Geisterbild theoretisch verschwinden (wenns denn diese Ursache war)