Opacity cuts image when download plot as png

The following script recreates a problem I ran with a larger code. The idea is to show a deformed figure from a test and its undeformed state at the same time with a lower opacity. Once I download the image as a png with the option on the figure, the image results with some parts missing (attached) not shown on the figure. After changing the opacity from 0.5 to 1.0, the images shows properly.
I arrange the code different ways (like adding the deformed state after the frames), but opacity seemed to always be the factor.
Any ideas of what I am doing wrong or is this a limitation?

#  Import Modules
import pandas as pd
import xarray as xr
import numpy as np
from pathlib import Path

# Plotly
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Start Subplot
x_data = [230, 230, 245, 245, 260, 260]
y_data = [ 10, -10,  10, -10,  10, -10]
z_data = [  0,   0,   0,   0,   0,   0]
i_data = [  0, 1, 2, 3]
j_data = [  1, 2, 3, 4]
k_data = [  2, 3, 4, 5]

trce = go.Mesh3d(x = x_data, y = y_data, z = z_data,
                       i = i_data, j = j_data, k = k_data,
                       opacity = 1.0,
                       color = 'red',
                       name = 'Deformed')

fig = make_subplots(
    rows=2, cols=2,
    specs=[[{"type": "mesh3d"}, {"type": "mesh3d"}],
           [{"type": "mesh3d"}, {"type": "mesh3d"}]],
    horizontal_spacing=0.05, vertical_spacing=0.05,)

# Plane views
pl_xy = {'vw':dict(eye=dict(x=0., y=0., z=1.35), up=dict(x=-1., y=0., z=0.)),'row':1,'col':1, 'x':0.35,'y':0.55}
pl_is = {'vw':dict(eye=dict(x=1.05, y=0.2, z=0.450)),'row':1,'col':2, 'x':0.85,'y':0.55}
pl_yz = {'vw':dict(eye=dict(x=1.20, y=0.01, z=0.01)),'row':2,'col':1, 'x':0.35,'y':0.15}
pl_xz = {'vw':dict(eye=dict(x=0.0, y=1.25, z=0.01)),'row':2,'col':2, 'x':0.85,'y':0.15}
planes = {'Plane_XY':pl_xy,'Plane_IS':pl_is,'Plane_YZ':pl_yz,'Plane_XZ':pl_xz}

# Define geometry
fig.add_trace(go.Mesh3d(trce),
            row='all', col='all')

fig.add_trace(go.Mesh3d(trce),
            row='all', col='all')

frames=[]

x_def_0 = [230, 230, 245, 245, 260, 260]
y_def_0 = [ 10, -10,  10, -10,  10, -10]
z_def_0 = [ 10,  10,   0,   0,  10,  10]
i_def_0 = [  0, 1, 2, 3]
j_def_0 = [  1, 2, 3, 4]
k_def_0 = [  2, 3, 4, 5]

trc_l = np.array([  0, 1, 2, 3, 4, 5, 6, 7])

frame_0 = []
for i in range(4):
    frame = go.Mesh3d(x = x_def_0, y = y_def_0, z = z_def_0,
                  i = i_def_0, j = j_def_0, k = k_def_0,
                  opacity = 1.0,
                  color = 'blue',
                  name = 'Deformed 0')
    frame_0.append(frame)

for i in range(4):
    frame = go.Mesh3d(x = x_data, y = y_data, z = z_data,
                  i = i_data, j = j_data, k = k_data,
                  opacity = 0.5,
                  color = 'green',
                  name = 'Deformed 0')
    frame_0.append(frame)

frame_mode_0 = go.Frame(data=frame_0, traces = trc_l, name = '0')

frames.append(frame_mode_0)

fig.update(frames=frames)

# Update Quadrant Views
for plane in planes.keys():
    quad = planes[plane]
    fig.update_scenes(
                      xaxis=dict(range=[220,270],visible=False),
                      yaxis=dict(range=[-25, 25],visible=False),
                      zaxis=dict(range=[-25, 25],visible=False), 
                      camera=quad['vw'],
                      row=quad['row'], col=quad['col']
                      )
    fig.add_layout_image(
        dict(
            x=quad['x'], y=quad['y'],
            sizex=.1, sizey=.1,
            layer="above",
        ))

# Menu and Slider Formatting
update_menus = [dict(type='buttons',
                    buttons=[dict(label='Play',
                                  method='animate',
                                  args=[[f'{k}' for k in range(1)],
                                         dict(frame=dict(duration=250.0, redraw=True),
                                              transition=dict(duration=0),
                                              easing='cubic-in-out',
                                              fromcurrent=False,
                                              mode='immediate')])],
                    direction= 'left', 
                    pad=dict(r= 10, t=55), 
                    x= 0.1, y= 0)]
sliders_layout = [{'currentvalue': {'visible': False},
                   'transition': {'duration': 250.0, 'easing': 'cubic-in-out'},
                   'pad': {'b': 10, 't': 40}, 
                   'len': 0.9, 'x': 0.1, 'y': 0, 
                   'steps': [{'args': [[k], {'frame': {'duration': 250.0, 'easing': 'cubic-in-out', 'redraw': True},
                   'transition': {'duration': 0, 'easing': 'cubic-in-out'}}], 
                   'label': k, 'method': 'animate'} for k in range(1)]}]

# Update General Layout
fig.update_layout(height=700, width=700, showlegend=False,
        updatemenus = update_menus,
        sliders = sliders_layout,
        margin = dict(l=30,r=30,b=10,t=30))

# Show
fig.show()