Creating the camera to fit view3d exactly

In my script I get the dimensions of the region_3d, then set them in the render properties and create a camera (and render). However the camera created has the aspect of the region but doesn’t capture it completely (cropping the render).

Is there any simple way of doing this?

import bpy

sel = bpy.context.selected_objects


for window in bpy.context.window_manager.windows:
    screen = window.screen


    for area in screen.areas:
        if area.type == 'VIEW_3D':
            awidth = area.width
            aheight = area.height
            override = {'window': window, 'screen': screen, 'area': area}
            
            bpy.ops.object.camera_add(override, view_align=True)
            
            cam = bpy.context.selected_objects
            bpy.ops.view3d.camera_to_view(override)
        
            save_resx = bpy.data.scenes['Scene'].render.resolution_x
            save_resy = bpy.data.scenes['Scene'].render.resolution_y
            save_file = bpy.data.scenes['Scene'].render.filepath
            
            bpy.data.scenes['Scene'].render.resolution_x = awidth
            bpy.data.scenes['Scene'].render.resolution_y = aheight
            
            bpy.data.scenes['Scene'].render.filepath = '/Users/xxx/Documents/image.jpg'
            bpy.ops.render.render( write_still=True, use_viewport=True) 
            
            bpy.data.scenes['Scene'].render.resolution_x = save_resx
            bpy.data.scenes['Scene'].render.resolution_y = save_resy
            bpy.data.scenes['Scene'].render.filepath = save_file
            
            bpy.ops.object.delete(use_global=True)
            break