diff --git a/osu.Game/Skinning/Editor/SkinEditor.cs b/osu.Game/Skinning/Editor/SkinEditor.cs
index cb27a84a75..00aa6ae940 100644
--- a/osu.Game/Skinning/Editor/SkinEditor.cs
+++ b/osu.Game/Skinning/Editor/SkinEditor.cs
@@ -165,10 +165,22 @@ namespace osu.Game.Skinning.Editor
private void placeComponent(Type type)
{
+ var targetContainer = getTarget(SkinnableTarget.MainHUDComponents);
+
+ if (targetContainer == null)
+ return;
+
if (!(Activator.CreateInstance(type) is ISkinnableDrawable component))
throw new InvalidOperationException($"Attempted to instantiate a component for placement which was not an {typeof(ISkinnableDrawable)}.");
- getTarget(SkinnableTarget.MainHUDComponents)?.Add(component);
+ var drawableComponent = (Drawable)component;
+
+ // give newly added components a sane starting location.
+ drawableComponent.Origin = Anchor.TopCentre;
+ drawableComponent.Anchor = Anchor.TopCentre;
+ drawableComponent.Y = targetContainer.DrawSize.Y / 2;
+
+ targetContainer.Add(component);
SelectedComponents.Clear();
SelectedComponents.Add(component);
diff --git a/osu.Game/Skinning/ISkinnableTarget.cs b/osu.Game/Skinning/ISkinnableTarget.cs
index ba3a9fe228..65b8ba7b17 100644
--- a/osu.Game/Skinning/ISkinnableTarget.cs
+++ b/osu.Game/Skinning/ISkinnableTarget.cs
@@ -13,7 +13,7 @@ namespace osu.Game.Skinning
///
/// Denotes a container which can house s.
///
- public interface ISkinnableTarget
+ public interface ISkinnableTarget : IDrawable
{
///
/// The definition of this target.