Modifications to fix the rotation
I think you should remove those grease pencil exceptions, and instead make initTransDataContainers_FromObjectData() work for grease pencil like data types. And then let the generic transform code compute the center and do the global/local transforms. Otherwise this all gets quite confusing.
See P856 for a start that makes this specific case work, I didn't check if it breaks other things though.