Yeah you are right, SampleGrad doesn’t seem to work with normals (it returns wrong color values or something).
You can try this instead of the custom node:
You will still be able to see some minor artifacts depending on the pixel distance but once you put diffuse on top and if your normal is detailed enough then you won’t be able to see them.