I had a similar problem with my shower drain.
It seems to be caused by the floor of the shower not having enough support near the drain - so the shower floor can flex if weight is put too near the drain. The flex of the fiberglass floor disturbs the seal between the fiberglass and the outer edge of the drain assembly.
My shower drain has a large lockring on the underside of the fiberglass floor which clamps the shower drain and the fiberglass floor together. The outer diameter of the ring is about 4 1/4 inch (measure yours). Support needs to be added to prevent flex of the fiberglass floor near the drain - not to the drain itself, because that would not prevent the fiberglass floor itself from flexing.
I used a 4 inch PVC straight socket connector because its inside diameter is about 4 1/2 inches and fits nicely around the lockring and presses onto the bottom of the fiberglass around the lockring - you'll need to saw a piece off the socket so it will fit around the drain pipe and trap.
Install some wood pieces between the floor joists near both sides of the trap and use more wood and shims to support the bottom of the PVC - it doesn't need to press the fiberglass floor upward, just have enough contact to prevent the floor from flexing downward around the drain. I used construction screws to attach the wood to the joists - so they could be easily removed and to give access to the drain and trap if further work is needed. If the supports are nailed into place, then future removal would be a pain.