Fixing image stretching when rotating [LWJGL]

So its been a long time since ive handled rotation code. I have never done it within GLSL before but ive given it a shot , the rotation calculates as it should , for a square viewpoint that is. When I rotate it stretches to fit the 1 by 1 image , how do I fix this?
Vertex shader code:


attribute vec2 position;
attribute vec2 texin;
uniform vec2 transform;
uniform float zoom;
varying vec2 vecdata;
uniform vec2 rotpos;
uniform float rotation;
void main(){
   if(zoom <= 0){//if its negative then its not fun :(
         zoom = 1;
   }
   vec4 offset = vec4((position.x+transform.x) * zoom,(position.y+transform.y) *zoom,1,1);
   rotation = 60 * (3.1415926535897936264/180);
   rotpos = vec2(0
   ,0);
   offset = vec4((offset.x - rotpos.x),offset.y - rotpos.y,1,1);
   mat4 RotationMatrix = mat4( cos( rotation ), -sin( rotation ), 0.0, 0.0,
             sin( rotation ),  cos( rotation ), 0.0, 0.0,
                      0.0,           0.0, 1.0, 0.0,
                 0.0,           0.0, 0.0, 1.0 );
                
   offset *= RotationMatrix;
   offset = vec4((offset.x + rotpos.x) ,offset.y + rotpos.y,1,1);

   gl_Position = offset;
   vecdata = texin;


}

No stretching
at 0 degrees

total stretching at 90 degrees

Two solutions to this, I convert the coordinates back to pixel coordinates before rotation then convert them back afterward.
I switch the entire code to handle pixel coordinates and only convert them at the last second in the shader. Latter seems more difficult to achieve.