If I ignore values below a threshold the lines go away:
vec3 linearTosRGB(vec3 color, float invgamma)
{
const float lower = 0.001f;
if (color.r > lower && color.r < 1.0f) color.r = pow(color.r, invgamma);
if (color.g > lower && color.g < 1.0f) color.g = pow(color.g, invgamma);
if (color.b > lower && color.b < 1.0f) color.b = pow(color.b, invgamma);
return color;
}