I see. Well I succeeded to avoid that and play it perpendicular to the surface, but yeah for some reason it appears weirdly rotated. I also rotated the origin (commented function) to see if the fx follows the forward vector of the origin, but apparently it does not, which is the root of the problem
Give it a try and do this lil workaround, normally it should be OK for axis-aligned surfaces. If it's no use then you'll have to go with the model approach.
PS: In FX editor make your fx spawn 1 unit ahead in forward vector, so that it doesnt coincide with the surface and do that "flashing" thing. I left you an .efx I used inside the .iwd which has that already.
z_pos.iwd