diff --git a/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.cpp b/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.cpp
index c456d33b..b68330c0 100644
--- a/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.cpp
+++ b/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.cpp
@@ -45,18 +45,43 @@ MagicLevelMeter::MagicLevelMeter()
     setColour (outlineColourId, juce::Colours::silver);
     setColour (tickmarkColourId, juce::Colours::silver);
 
+    lookAndFeelChanged();
+
     startTimerHz (30);
 }
 
 void MagicLevelMeter::paint (juce::Graphics& g)
 {
-    if (auto* lnf = dynamic_cast<LookAndFeelMethods*>(&getLookAndFeel()))
-    {
-        lnf->drawLevelMeter (g, *this, source, getLocalBounds());
-        return;
-    }
+    actualLookAndFeel->drawLevelMeter (g, *this, source, getLocalBounds());
+}
+
+void MagicLevelMeter::setLevelSource (MagicLevelSource* newSource)
+{
+    source = newSource;
+}
+
+void MagicLevelMeter::timerCallback()
+{
+    repaint();
+}
+
+void MagicLevelMeter::lookAndFeelChanged()
+{
+    auto* lnf = dynamic_cast<LookAndFeelMethods*> (&getLookAndFeel());
+
+    if (lnf)
+        actualLookAndFeel = lnf;
+    else
+        actualLookAndFeel = &lookAndFeelFallback;
+
+    repaint();
+}
+
+// ================================================================================
 
-    const auto backgroundColour = findColour (backgroundColourId);
+void MagicLevelMeter::LookAndFeelFallback::drawLevelMeter (juce::Graphics& g, MagicLevelMeter& meter, MagicLevelSource* source, juce::Rectangle<int> bounds)
+{
+    const auto backgroundColour = meter.findColour (backgroundColourId);
     if (!backgroundColour.isTransparent())
         g.fillAll (backgroundColour);
 
@@ -67,39 +92,29 @@ void MagicLevelMeter::paint (juce::Graphics& g)
     if (numChannels == 0)
         return;
 
-    auto bounds = getLocalBounds().reduced (3).toFloat();
+    auto inner = bounds.reduced (3).toFloat();
 
-    const auto width = bounds.getWidth() / numChannels;
-    const auto barBackgroundColour = findColour (barBackgroundColourId);
-    const auto barFillColour = findColour (barFillColourId);
-    const auto outlineColour = findColour (outlineColourId);
+    const auto width               = inner.getWidth() / static_cast<float> (numChannels);
+    const auto barBackgroundColour = meter.findColour (barBackgroundColourId);
+    const auto barFillColour       = meter.findColour (barFillColourId);
+    const auto outlineColour       = meter.findColour (outlineColourId);
 
     const auto infinity = -100.0f;
-    for (int i=0; i < numChannels; ++i)
+    for (int i = 0; i < numChannels; ++i)
     {
-        auto bar = bounds.removeFromLeft (width).reduced (1);
+        auto bar = inner.removeFromLeft (width).reduced (1);
         g.setColour (barBackgroundColour);
         g.fillRect (bar);
         g.setColour (outlineColour);
         g.drawRect (bar, 1.0f);
         bar.reduce (1, 1);
         g.setColour (barFillColour);
-        g.fillRect (bar.withTop (juce::jmap (juce::Decibels::gainToDecibels (source->getRMSvalue (i), infinity),
-                                             infinity, 0.0f, bar.getBottom(), bar.getY())));
-        g.drawHorizontalLine (juce::roundToInt (juce::jmap (juce::Decibels::gainToDecibels (source->getMaxValue (i), infinity),
-                                                            infinity, 0.0f, bar.getBottom (), bar.getY ())),
-                              static_cast<float>(bar.getX ()), static_cast<float>(bar.getRight ()));
+        g.fillRect (bar.withTop (juce::jmap (juce::Decibels::gainToDecibels (source->getRMSvalue (i), infinity), infinity, 0.0f, bar.getBottom(), bar.getY())));
+        g.drawHorizontalLine (juce::roundToInt (
+                                juce::jmap (juce::Decibels::gainToDecibels (source->getMaxValue (i), infinity), infinity, 0.0f, bar.getBottom(), bar.getY())),
+                              static_cast<float> (bar.getX()), static_cast<float> (bar.getRight()));
     }
 }
 
-void MagicLevelMeter::setLevelSource (MagicLevelSource* newSource)
-{
-    source = newSource;
-}
-
-void MagicLevelMeter::timerCallback()
-{
-    repaint();
-}
 
-} // namespace foleys
+}  // namespace foleys
diff --git a/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.h b/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.h
index d45268bc..0c554f59 100644
--- a/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.h
+++ b/modules/foleys_gui_magic/Widgets/foleys_MagicLevelMeter.h
@@ -40,9 +40,10 @@ namespace foleys
 
 class MagicLevelSource;
 
-class MagicLevelMeter : public juce::Component,
-                        public juce::SettableTooltipClient,
-                        private juce::Timer
+class MagicLevelMeter
+  : public juce::Component
+  , public juce::SettableTooltipClient
+  , private juce::Timer
 {
 public:
     enum ColourIds
@@ -56,11 +57,8 @@ class MagicLevelMeter : public juce::Component,
 
     struct LookAndFeelMethods
     {
-        virtual ~LookAndFeelMethods()=default;
-        virtual void drawLevelMeter (juce::Graphics& g,
-                                     MagicLevelMeter& meter,
-                                     MagicLevelSource* source,
-                                     juce::Rectangle<int> bounds) = 0;
+        virtual ~LookAndFeelMethods()                                                                                                  = default;
+        virtual void drawLevelMeter (juce::Graphics& g, MagicLevelMeter& meter, MagicLevelSource* source, juce::Rectangle<int> bounds) = 0;
     };
 
     MagicLevelMeter();
@@ -71,11 +69,23 @@ class MagicLevelMeter : public juce::Component,
 
     void timerCallback() override;
 
+    void lookAndFeelChanged() override;
+
 private:
     juce::WeakReference<MagicLevelSource> source;
 
+    class LookAndFeelFallback : public LookAndFeel, public LookAndFeelMethods
+    {
+    public:
+        LookAndFeelFallback() = default;
+        void drawLevelMeter (juce::Graphics& g, MagicLevelMeter& meter, MagicLevelSource* source, juce::Rectangle<int> bounds) override;
+    };
+
+    LookAndFeelFallback lookAndFeelFallback;
+    LookAndFeelMethods* actualLookAndFeel = &lookAndFeelFallback;
+
     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MagicLevelMeter)
 };
 
 
-} // namespace foleys
+}  // namespace foleys