Am I flipping this shader or is it a GPU problem?

Hi everyone, I have a custom shader here for water distortion but it flips my texture and I do not want it to. I’m not particularly skilled with the shader language as of yet, however I’ve heard that some GPUs have the tenancy to flip shaders based on where it thinks the origin point should be. I’ve tried different styles of rendering like with DX9 and 11, but nothing seemed to change. If I am in fact flipping the texture, could you show me where it is happening and how to fix it?

Shader "Custom/Distort" {
Properties {
 _Refraction ("Refraction", Range (0.00, 100.0)) = 1.0
 _DistortTex ("Base (RGB)", 2D) = "white" {}
}

SubShader {
 
 Tags { "RenderType"="Transparent" "Queue"="Overlay" }
 LOD 100
 
 GrabPass
 {
  
 }
 
CGPROGRAM
#pragma surface surf NoLighting
#pragma vertex vert

fixed4 LightingNoLighting(SurfaceOutput s, fixed3 lightDir, fixed atten){
        fixed4 c;
        c.rgb = s.Albedo;
        c.a = s.Alpha;
        return c;
  }

sampler2D _GrabTexture : register(s0);
sampler2D _DistortTex : register(s2);
float _Refraction;

float4 _GrabTexture_TexelSize;

struct Input {
 float2 uv_DistortTex;
 float3 color;
 float3 worldRefl;
 float4 screenPos;
 INTERNAL_DATA
};

void vert (inout appdata_full v, out Input o) {
  UNITY_INITIALIZE_OUTPUT(Input,o);
  o.color = v.color;
}

void surf (Input IN, inout SurfaceOutput o) {

	
    float3 distort = tex2D(_DistortTex, IN.uv_DistortTex) * float3(IN.color.r,IN.color.g,IN.color.b );
    float2 offset = distort * _Refraction * _GrabTexture_TexelSize.xy;
    IN.screenPos.xy = offset * IN.screenPos.z + IN.screenPos.xy; 
    float4 refrColor = tex2Dproj(_GrabTexture, IN.screenPos);
    o.Alpha = refrColor.a;
    o.Emission = refrColor.rgb;

}
ENDCG
}
}

I’d suggest you use UNITY_UV_STARTS_AT_TOP as described here: