Now the reason why I do it as I do:
At first I didn't really understand the dfdx and dfdy, and I used the eyevec example from somebody else to generate the flat normals in the fragment shaders. The problem is: in the example the normals are in eye space, but I needed them in world space. So I used the transpose(gl_NormalMatrix), to try to get the eye-space normal back to world-space normal. It was kind of a guess that this was the right way, because I saw the gl_normalmatrix is the transpose of the inverse of the modelview matrix. so I thought: I take the transpose of THAT to get the inverse of the modelviewmatrix and then I can transform the eye-space normal back to world-space normal.
But now I understand that it goes back to OBJECT-space, and not world-space, therefore the results I'm getting seem logical.