Nice concept you got there !
Looking at your first screenshot (reproduced below), I finally understand what you want to achieve and maybe the reason/explanation for your issue.
Your screenshot:

Looks like, please confirm, you use:
- Text2D(TextFontInfo fontInfo, string text, Point2D origin, int offsetX, int offsetY) for the text
- Rectangle(Point3D origin, Vector3D xVector, Vector3D yVector, bool filled) for the rect thus showing as a parallelogram at this angle
My understanding of the Rendering in Navisworks is:
- 3D methods, like Rectangle(Point3D origin...) render like the actaul 3D objects in the model,using clipping, culling etc
- 2D methods are actually Overlay methods withotu any depth per se
In addition, while not explicitly documented, I 'm assuming:
- 3D methods should be enclosed by BeginModelContext/EndModelContext (but most probably not needed if called from Render(View view, Graphics graphics) since this should be the current context)
- 2D methods should be enclosed by BeginWindowContext/EndWindowContext(but most probably not needed if called from OverlayRender(View aView, Graphics aGraphics) since this should be the current context)
Now back to your use case, I would guess:
- you do all the rendering in the Render(View aView, Graphics aGraphics) method
- you call alternatively Text2D and Rectangle(3D....)
Thus the things get messed up
If I understood correctly above, you do not need any trick to offset some part, instead you could try something like the following pseudo-code in Render(View aView, Graphics aGraphics:
BeginModelContext();
for (int i = 0; i != areasCount; i++)
Rectangle(area[i].position...);
EndModelContext();
BeginWindowContext();
for (int i = 0; i != areasCount; i++)
Text2D(area[i].name...);
EndWindowContext();