Sharpen egdes using the SubSurf Modifier - floodlight
It appears you already tried a Crease factor on those edges using shift-e

https://docs.blender.org/manual/en/dev/modeling/meshes/editing/edges.html


  This edge property, a value between (0.0 to 1.0), is used by the
  Subdivision Surface Modifier to control the sharpness of the edges in
  the subdivided mesh. This operator enters an interactive mode (a bit
  like transform tools), where by moving the mouse (or typing a value
  with the keyboard) you can set the (average) crease value of selected
  edges. A negative value will subtract from the actual crease value, if
  present. To clear the crease edge property, enter a value of -1.


It turns out creasing just the edges of the opening is not enough.  You also have to crease the diagonal edges that have a vertex on the opening: