Visual artifact when rendering transparent vtkQuadricLODActor

I am getting incorrect shading when rendering a vtkQuadricLODActor with transparency, for both levels: LOD0 and LOD1 when interacting with the scene.

I tried setting the actor’s backface property, also turning the property’s lighting off, which did not help.
If I simply change the actor to a regular vtkActor it renders fine.

Any thoughts on how to improve this visual result? Could this be a bug?
Note: this is VTK 9.0.3.


Source code:

#include <vtkCallbackCommand.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkQuadricLODActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkTriangleFilter.h>
#include <vtkSphereSource.h>
#include <vtkSTLReader.h>


int main(int argc, char* argv[])
{
  vtkSmartPointer<vtkPolyData> inputPolyData;
  if (argc > 1)
  {
    vtkNew<vtkSTLReader> reader;
    reader->SetFileName(argv[1]);
    vtkNew<vtkTriangleFilter> triangles;
    triangles->SetInputConnection(reader->GetOutputPort());
    triangles->Update();
    inputPolyData = triangles->GetOutput();
  }
  else
  {
    vtkNew<vtkSphereSource> sphereSource;
    sphereSource->SetThetaResolution(20);
    sphereSource->SetPhiResolution(20);
    sphereSource->Update();
    inputPolyData = sphereSource->GetOutput();
  }

  vtkNew<vtkPolyDataMapper> highResMapper;
  highResMapper->SetInputData(inputPolyData);

  vtkNew<vtkNamedColors> colors;
  vtkNew<vtkQuadricLODActor> actor;
  actor->SetMapper(highResMapper);
  actor->GetProperty()->SetInterpolationToFlat();
  actor->GetProperty()->SetColor(colors->GetColor3d("Gold").GetData());
  actor->GetProperty()->SetOpacity(0.5);
  //actor->GetProperty()->LightingOff();
  //actor->SetProperty(actor->GetBackfaceProperty());
  //actor->SetBackfaceProperty(actor->GetProperty());

  vtkNew<vtkRenderer> renderer;
  vtkNew<vtkRenderWindow> renderWindow;
  renderWindow->SetSize(1024, 768);
  renderWindow->SetWindowName("LOD demo");
  renderWindow->AddRenderer(renderer);

  vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
  renderWindowInteractor->SetRenderWindow(renderWindow);

  renderWindowInteractor->SetDesiredUpdateRate(60.0);

  renderer->AddActor(actor);
  renderer->SetBackground(colors->GetColor3d("CornflowerBlue").GetData());

  renderWindow->Render();
  renderWindowInteractor->Start();

  return EXIT_SUCCESS;
}

Also, I’m getting the following warnings at runtime. Has this been fixed in more recent versions?

vtkOpenGLPolyDataMapper:270   WARN| vtkOpenGLPolyDataMapper::GetVertexShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::GetVertexShaderCode instead.
vtkOpenGLPolyDataMapper:262   WARN| vtkOpenGLPolyDataMapper::SetVertexShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::SetVertexShaderCode instead.
vtkOpenGLPolyDataMapper:300   WARN| vtkOpenGLPolyDataMapper::GetGeometryShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::GetGeometryShaderCode instead.
vtkOpenGLPolyDataMapper:292   WARN| vtkOpenGLPolyDataMapper::SetGeometryShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::SetGeometryShaderCode instead.
vtkOpenGLPolyDataMapper:285   WARN| vtkOpenGLPolyDataMapper::GetFragmentShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::GetFragmentShaderCode instead.
vtkOpenGLPolyDataMapper:277   WARN| vtkOpenGLPolyDataMapper::SetFragmentShaderCode was deprecated for VTK 9.0 and will be removed in a future version.  Use vtkOpenGLShaderProperty::SetFragmentShaderCode instead.

I meet the similar question.Did you solve it?
My screen is follows:
Use vtkOpenGLShaderProperty::SetVertexShaderCode instead.
2023-09-04 07:14:38.001 ( 0.127s) [ 25511640]vtkOpenGLPolyDataMapper:336 WARN| vtkOpenGLPolyDataMapper::GetGeometryShaderCode was deprecated for VTK 9.0 and will be removed in a future version. Use vtkOpenGLShaderProperty::GetGeometryShaderCode instead.
2023-09-04 07:14:38.001 ( 0.127s) [ 25511640]vtkOpenGLPolyDataMapper:328 WARN| vtkOpenGLPolyDataMapper::SetGeometryShaderCode was deprecated for VTK 9.0 and will be removed in a future version. Use vtkOpenGLShaderProperty::SetGeometryShaderCode instead.
2023-09-04 07:14:38.001 ( 0.127s) [ 25511640]vtkOpenGLPolyDataMapper:321 WARN| vtkOpenGLPolyDataMapper::GetFragmentShaderCode was deprecated for VTK 9.0 and will be removed in a future version. Use vtkOpenGLShaderProperty::GetFragmentShaderCode instead.
2023-09-04 07:14:38.001 ( 0.127s) [ 25511640]vtkOpenGLPolyDataMapper:313 WARN| vtkOpenGLPolyDataMapper::SetFragmentShaderCode was deprecated for VTK 9.0 and will be removed in a future version. Use vtkOpenGLShaderProperty::SetFragmentShaderCode instead.

Sorry for the late reply. I ended up using a regular vtkActor and plugging in a separate vtkMapper to handle the LOD logic directly.