The backsides of waves being black is about the only issue left now.
This is often an issue with screen normals pointing into the screen. The assumption, that all screen normals point outside the screen is just wrong, therefore you need to take special care of these normals.
One case would be, when using compression (xyz to 2 channel compression). E.g. the naive compression, when only saving the x and y coord of the normal and reconstructing z from them (z = -sqrt(x*x+y*y) ) will not work in this case. Although clamping could be a problem.
Therefore check your code for issues when your normals point into the screen.