diff --git a/src/plainui/tests.py b/src/plainui/tests.py
index f7344af7cd63a130a8c7f476c24ccd6a4aa6e638..b89515936f4d55331f3d32222d2d7e7b64758ea0 100644
--- a/src/plainui/tests.py
+++ b/src/plainui/tests.py
@@ -1395,13 +1395,13 @@ class ViewsTest(TestCase):
         track.save()
         event1 = Event(
             conference=self.conf, assembly=assembly, track=track, name='Event1_1', is_public=True, room=room,
-            schedule_start=datetime(2020, 1, 2, 0, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45)
+            schedule_start=datetime(2020, 1, 2, 0, 15, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45)
         )
         event1.save()
         EventParticipant(is_public=True, participant=self.user, event=event1, role=EventParticipant.Role.SPEAKER).save()
         event2 = Event(
             conference=self.conf, assembly=assembly, track=track, name='Event1_2', is_public=True, room=room,
-            schedule_start=datetime(2020, 1, 2, 1, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45)
+            schedule_start=datetime(2020, 1, 2, 1, 15, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45)
         )
         event2.save()
 
@@ -1420,6 +1420,7 @@ class ViewsTest(TestCase):
         self.assertEqual(resp.context_data['mode'], 'calendar')
         self.assertEqual(resp.context_data['events'], {
             'rooms_with_events': [(room, [
+                {'type': 'space', 'minutes': 15.0},
                 {'type': 'event', 'event': event1, 'minutes': 45.0},
                 {'type': 'space', 'minutes': 15.0},
                 {'type': 'event', 'event': event2, 'minutes': 45.0}
diff --git a/src/plainui/views.py b/src/plainui/views.py
index 1c8b61bcc108422a529a2a5266c14470ad4d837a..57e5c833bf500d9a2b100ec775397f650ce0dfc0 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -980,6 +980,9 @@ def _organize_events_for_calendar(conf, events):
     for event in events:
         if first_start is None:
             first_start = event.schedule_start
+            calendar_start = localtime(first_start.replace(minute=0, second=0, microsecond=0))
+            if localtime(first_start) != calendar_start:
+                first_start = first_start - (localtime(first_start) - calendar_start)
 
         if event.room_id not in events_by_room:
             events_by_room[event.room_id] = []