To reproduce: public Form1() { InitializeComponent(); this.radScheduler1.Appointments.Add(new Appointment(DateTime.Today.AddHours(1),TimeSpan.FromHours(3),"Meeting")); this.radScheduler1.ActiveViewType = SchedulerViewType.Week; this.radScheduler1.GetWeekView().RangeFactor = ScaleRange.HalfHour; this.radScheduler1.SchedulerElement.DragDropBehavior.AutoScrollDayViewOnDrag = true; this.Size = new Size(800, 350); } It's necessary to stretch down the application so that a few hours are shown (let's say 4 hours) and the appointment is a bit less, for example 3 hours. If you look at the gif, I am scrolling down around 14, then I'm stopping a bit, while always keeping the mouse button pressed, and then I start scrolling up: at that time the scroll results in going down until 19, instead of going up. Workaround: this.radScheduler1.SchedulerElement.DragDropBehavior = new CustomAppointmentDraggingBehavior(this.radScheduler1.SchedulerElement); public class CustomAppointmentDraggingBehavior : AppointmentDraggingBehavior { public CustomAppointmentDraggingBehavior(SchedulerVisualElement activeOwner) : base(activeOwner) { } protected override void HandleMouseMove(Point mousePos) { base.HandleMouseMove(mousePos); DayViewAppointmentsTable table = this.ActiveOwner.Scheduler.DragDropBehavior.ActiveOwner as DayViewAppointmentsTable; if (table != null && this.ActiveOwner.Scheduler.DragDropBehavior.AutoScrollDayViewOnDrag) { Point pt = table.PointFromScreen(Control.MousePosition); FieldInfo fi = typeof(DayViewAppointmentsTable).GetField("lastMovingPoint", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); fi.SetValue(table, pt); } } }