Hi Felipe, Perhaps you should try setting the interfaces to Nil instead of calling their _release method... // this is the function that cleans up Direct3D and COM procedure cleanD3D(); begin d3ddev := Nil; // close and release the 3D device d3d := Nil; // close and release Direct3D end; cheers, Paul