Steps 1-3 I'm getting, but I'm not understanding the rest.
Firstly, when you say scale, do you mean tk2dCamera.ZoomFactor?
I'm also not understanding using the screen extents. So I save reference to the tk2dCamera.ScreenExtents (as cameraExtents) when it's at 0,0,0 and ZoomFactor of 1 (at 1080p, this gives me (x:-960.00, y:-540.00, width:1920.00, height:1080.00)).
For step 4, in my Update, I multiply the new extents like so
float scale = tk2dCamera.ZoomFactor;
Rect newExtents = new Rect(cameraExtents.xMin * scale,
cameraExtents.yMin * scale,
cameraExtents.width * scale,
cameraExtents.height * scale);
But this gives me a very large Rect ((x:-202560.00, y:-113940.00, width:405120.00, height:227880.00) when ZoomFactor is 211, for example). I'm not understanding how to use this to clamp the camera bounds?