Bevel and subsurf are weird after inset faces. I used hardops. Simple noob question I want to have nicely rounded recess, instead I get weird face.


I beveled with hardops
Subsurfed
Now my goal is the left object.

I achieved it with boolean. But i find it too long. Instead of I did:

inset face (I key in edit mode)
scale it down
extrude and move it down along z axis.
I have something weird.


I tried to use  creases and bevel groups, but I can't get it work. Also tried to extrude instead of inset. The same result. Whats causes the problem? The bevel? The subsurf? The inset? Some HardOps parameters?
I'd be really grateful!
To elaborate on Zak’s answer a little, the issue stems from these four edges at the corners of the mesh:

When you use the Bevel modifier with the Angle limit method, only sharp edges will be beveled. These four edges are certainly not sharp—the faces they’re connected to are completely flat—so they don’t get beveled at all. This produces corner geometry that looks like this:

Of particular note is the fact that this edge loop still only contains exactly four vertices:

Since the bevel didn’t actually add any additional geometry to this edge loop, subdividing it will distort it into a circle, for the same reasons that a simple four-vertex plane will approach a circle after subdivision.
One way to fix this is to set the Bevel modifier’s limit method to None. This causes all edges to be beveled, even ones that are completely flat, which adds the necessary additional geometry at the corners:

Now all the edge loops have extra vertices, reducing distortion when subdivision is applied:

Note that this only works okay because the upper rim is completely flat: if it were curved, then the additional geometry would cause pinching at the corners, and you might need to find a different approach.

As a final note, while this solution works okay for such a simple example, but in general, beveling all the edges might be too extreme. In situations where you want more control, you can use the Weight limit method and explicitly mark which edges you want to be beveled using CtrlE ▸ Edge Bevel Weight. For example, this can be used to mark everything except the corners as edges to be beveled:

With subdivision, this produces a nice, round shape: