The memory leak is reproducible when the main thread is too busy to dispose objects used by RadDocument internally. Thus, the RadDocument instances are kept alive in the memory. Workaround: When the scenario includes back processing of documents: Start different threads responsible to perform the required operations and use the following code: Dispatcher dispatcher = Dispatcher.CurrentDispatcher; dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal); Dispatcher.Run(); anywhere in the background thread processing the RadDocument.