I have found (and fixed) an exceedingly bad bug. I should be able to commit the change tonight. Basically the bug was that if more than one shape shares an appearance and the appearance is changed directly or indirectly then only the first shape will be changed when rendered to reflect this.
I am not sure if this accounts for any issues people have been having, but it explains a few things I have been running into.
The solution was to keep two lists, one called changedAppearances and one called changedTransforms. When a changed appearance is found then a new atom is created and the appearance is placed on the changed list. After the render frame has been built we step through the changed appearances and set them to unchanged.
In doing this I also discovered that we were not handling shape caching for foreground and background shapes. I should be able to commit both fixes tonight.