I just wanted to add a little clarity of what is happening. ParaView is loading your data correctly, but rendering it a bit wrong. The asymmetry you are seeing is an artifact from the rendering library that ParaView is using. Just about every rendering system will take quadrilaterals and internally divide them into triangles before rendering. This is because interpolating colors/texture coordinates is a lot faster for a triangle. This is true for pretty much every OpenGL implementation I have encountered as well as the OSPRay rendering backend. This is why you are seeing that either red or blue diagonal line through the squares. You are seeing the triangles the rendering system is interpolating on.
Even though the rendering system is simplifying your data, ParaView itself will do a proper bilinear interpolation. So for example, in the following screenshot I have run the
Resample To Image filter on your data. You can see that when a ParaView filter probes your data, you get the correct interpolation. (The blue in between is just the resample filter trying to probe the empty space between your quadrilaterals.)