As you can see in the following screenshot, the canvas renderer is covered by another game object. However, the mesh renderer which is at the same z position from the camera is never covered by another game object.

I cannot use Screen Overlay because I’m using the Google Cardboard - Google VR asset. I also have tried using a Transform instead a Rect Transform. I have changed the z position with a weird behaviour of a result. The other game object uses a mesh renderer.
Should I use something like layers to fix this?
UPDATE:
I have used the code of the following link that add the possibility of adding a sorting layer to a (3d) mesh renderer. The sorting layer appear in the inspector, but it does not seem to work anymore: http://forum.unity3d.com/threads/drawing-order-of-meshes-and-sprites.212006/