Hello, Simon!
The best way is to use topological objects (TopoDS_Face) for these purposes. Because a face represents a surface, bounded by a wire (a set of edges).
If you want to work only with bounded part of surface check all your actions in the parametric space. In fact, when you create a face from a surface and a wire, complementary curves are created. These curves are 2D presentations of each edge in the parametric space of the base surface. They are parametric bounds of given surface. This is, I suppose, what you are looking for.
If you want to work within these bounds, you have to use them instead of native bounds of your surface. For these purposes you could use TopoDS_Face. This object contains all information you need: the surface and the bounds represented by edges which contain 3D curves and parametric curves.
To create a face, you could use BRepBuilderAPI_MakeFace. To obtain a geometry from topological objects, use methods from BRep_Tool class.
Hope it will help you.
Best regards, Commenter-1.