diff --git a/Cargo.toml b/Cargo.toml
index c95f9460742cd901d66fdb81592bc824592195c4..09587ba737c2805e841da2f03f083c34662cf8cf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -43,6 +43,10 @@ required-features = [ "bevy/bevy_winit" ]
 name = "ui_position"
 required-features = [ "bevy/bevy_winit" ]
 
+[[example]]
+name = "text_color"
+required-features = [ "bevy/bevy_winit" ]
+
 [[example]]
 name = "sequence"
 required-features = [ "bevy/bevy_winit" ]
diff --git a/examples/text_color.gif b/examples/text_color.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b21715830defbbf04b412cd07bac9bea03a036cb
Binary files /dev/null and b/examples/text_color.gif differ
diff --git a/examples/text_color.rs b/examples/text_color.rs
new file mode 100644
index 0000000000000000000000000000000000000000..adc513f2e99970be12f83ce7c056de2b1fe8d4ce
--- /dev/null
+++ b/examples/text_color.rs
@@ -0,0 +1,121 @@
+use bevy::prelude::*;
+use bevy_tweening::{lens::*, *};
+
+const WIDTH: f32 = 1200.;
+const HEIGHT: f32 = 600.;
+
+fn main() -> Result<(), Box<dyn std::error::Error>> {
+    App::default()
+        .insert_resource(WindowDescriptor {
+            title: "TextColorLens".to_string(),
+            width: WIDTH,
+            height: HEIGHT,
+            vsync: true,
+            ..Default::default()
+        })
+        .add_plugins(DefaultPlugins)
+        .add_plugin(TweeningPlugin)
+        .add_startup_system(setup)
+        .run();
+
+    Ok(())
+}
+
+fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
+    commands.spawn_bundle(UiCameraBundle::default());
+
+    let font = asset_server.load("fonts/FiraMono-Regular.ttf");
+
+    let size_x = 140.;
+    let size_y = 40.;
+
+    let delta_x = WIDTH / 5.;
+    let delta_y = HEIGHT / 6.;
+
+    let mut x = 20.;
+    let mut y = 20.;
+    let mut iy = 0;
+
+    for (ease_function, ease_name) in &[
+        (EaseFunction::QuadraticIn, "QuadraticIn"),
+        (EaseFunction::QuadraticOut, "QuadraticOut"),
+        (EaseFunction::QuadraticInOut, "QuadraticInOut"),
+        (EaseFunction::CubicIn, "CubicIn"),
+        (EaseFunction::CubicOut, "CubicOut"),
+        (EaseFunction::CubicInOut, "CubicInOut"),
+        (EaseFunction::QuarticIn, "QuarticIn"),
+        (EaseFunction::QuarticOut, "QuarticOut"),
+        (EaseFunction::QuarticInOut, "QuarticInOut"),
+        (EaseFunction::QuinticIn, "QuinticIn"),
+        (EaseFunction::QuinticOut, "QuinticOut"),
+        (EaseFunction::QuinticInOut, "QuinticInOut"),
+        (EaseFunction::SineIn, "SineIn"),
+        (EaseFunction::SineOut, "SineOut"),
+        (EaseFunction::SineInOut, "SineInOut"),
+        (EaseFunction::CircularIn, "CircularIn"),
+        (EaseFunction::CircularOut, "CircularOut"),
+        (EaseFunction::CircularInOut, "CircularInOut"),
+        (EaseFunction::ExponentialIn, "ExponentialIn"),
+        (EaseFunction::ExponentialOut, "ExponentialOut"),
+        (EaseFunction::ExponentialInOut, "ExponentialInOut"),
+        (EaseFunction::ElasticIn, "ElasticIn"),
+        (EaseFunction::ElasticOut, "ElasticOut"),
+        (EaseFunction::ElasticInOut, "ElasticInOut"),
+        (EaseFunction::BackIn, "BackIn"),
+        (EaseFunction::BackOut, "BackOut"),
+        (EaseFunction::BackInOut, "BackInOut"),
+        (EaseFunction::BounceIn, "BounceIn"),
+        (EaseFunction::BounceOut, "BounceOut"),
+        (EaseFunction::BounceInOut, "BounceInOut"),
+    ] {
+        let tween = Tween::new(
+            *ease_function,
+            TweeningType::PingPong,
+            std::time::Duration::from_secs(1),
+            TextColorLens {
+                start: Color::RED,
+                end: Color::BLUE,
+                section: 0,
+            },
+        );
+
+        commands
+            .spawn_bundle(TextBundle {
+                style: Style {
+                    size: Size::new(Val::Px(size_x), Val::Px(size_y)),
+                    position: Rect {
+                        left: Val::Px(x),
+                        top: Val::Px(y),
+                        right: Val::Auto,
+                        bottom: Val::Auto,
+                    },
+                    position_type: PositionType::Absolute,
+                    align_content: AlignContent::Center,
+                    align_items: AlignItems::Center,
+                    align_self: AlignSelf::Center,
+                    justify_content: JustifyContent::Center,
+                    ..Default::default()
+                },
+                text: Text::with_section(
+                    *ease_name,
+                    TextStyle {
+                        font: font.clone(),
+                        font_size: 24.0,
+                        color: Color::WHITE,
+                    },
+                    // you can still use Default
+                    Default::default(),
+                ),
+                ..Default::default()
+            })
+            .insert(Animator::new(tween));
+
+        y += delta_y;
+        iy += 1;
+        if iy >= 6 {
+            x += delta_x;
+            y = 20.;
+            iy = 0;
+        }
+    }
+}