Experimentally, I found that an ellipse defined by a rectangle that is sqrt(2) larger than the inner rectangle works. So pass sqrt(2) to this function, and you will get the appropriate rectangle:
RectangleF boundingEllipse = GetScaledRectangle(innerRect, Convert.ToSingle(Math.Sqrt(2d)));
private RectangleF GetScaledRectangle(RectangleF rect, float scale)
{
float width = rect.Width * scale;
float height = rect.Height * scale;
float gap = width - rect.Width;
float left = rect.Left - (gap / 2f);
gap = height - rect.Height;
float top = rect.Top - (gap / 2f);
return new RectangleF(left, top, width, height);
}