I tried implementing a arcsin to fix it, but i ran into a new problem
float localX = asin(2 * ((float)i / resolution - (float)j / resolution) - 1) / PI + 0.5f;
float localY = asin(2 * ((float)j / resolution) - 1) / PI + 0.5f;
float newX = (1 - localX - localY) * GetFirstVert.X + localX * GetSecondVert.X + localY * GetThirdVert.X;
float newY = (1 - localX - localY) * GetFirstVert.Y + localX * GetSecondVert.Y + localY * GetThirdVert.Y;
float newZ = (1 - localX - localY) * GetFirstVert.Z + localX * GetSecondVert.Z + localY * GetThirdVert.Z;