backported g3d changes: