private void ReplaceArtwork(ref SmartObjectLayer smartObjectLayer, int newHeight = 300)
{
    // Load the input image
    using (var image = NetVips.Image.NewFromFile(ImageFilePath, access: Enums.Access.Sequential))
    {
        var scale = (double)newHeight / smartObjectLayer.Height;
        var newWidth = (int)Math.Round(smartObjectLayer.Width * scale);
        var newImage = ResizeImageFitCenter(image, newWidth, newHeight);
        using var innerImage = new PsdImage(newWidth, newHeight);
        innerImage.SetResolution(72, 72);
        using var innerStream = new MemoryStream(newImage.PngsaveBuffer());
        using var layer = new Aspose.PSD.FileFormats.Psd.Layers.Layer(innerStream) { HorizontalResolution = 72, VerticalResolution = 72 };
        innerImage.AddLayer(layer);
        smartObjectLayer.ReplaceContents(innerImage);
        smartObjectLayer.UpdateModifiedContent();
    }
}