diff --git a/include/turtlesim/turtle.h b/include/turtlesim/turtle.h
index 901639cfc9d6db7687290c2b4212d8028faa14d0..e35615fb796d486381729f0d3d6d6c6b387e5f15 100644
--- a/include/turtlesim/turtle.h
+++ b/include/turtlesim/turtle.h
@@ -98,6 +98,7 @@ private:
 
   float meter_;
   bool label_on_ = false;
+  QPen pen_label_;
   QString label_ = "";
 
   struct TeleportRequest
diff --git a/src/turtle.cpp b/src/turtle.cpp
index 75db62bc789d4eeee8c0df7e5033ea4f63fbaf6f..a4d9dcd30eb11b6eedc18c57a125dcb94c071a5b 100644
--- a/src/turtle.cpp
+++ b/src/turtle.cpp
@@ -94,6 +94,8 @@ bool Turtle::setPenCallback(turtlesim::SetPen::Request& req, turtlesim::SetPen::
 bool Turtle::setLabelCallback(turtlesim_xl::SetLabel::Request& req, turtlesim_xl::SetLabel::Response&){
   Turtle::label_ = QString(req.name.c_str());
   label_on_ = req.on;
+  QPen pen(QColor(req.r, req.g, req.b));
+  pen_label_ = pen;
   return true;
 }
 bool Turtle::teleportRelativeCallback(turtlesim::TeleportRelative::Request& req, turtlesim::TeleportRelative::Response&)
@@ -227,7 +229,7 @@ void Turtle::paint(QPainter& painter)
   if(label_on_){
     QPointF pl = pos_ * meter_;
     pl.rx() -= 0.3 * turtle_rotated_image_.width();
-    painter.setPen(Qt::red);
+    painter.setPen(pen_label_);
     painter.setFont(QFont("Arial",meter_/2));
     painter.drawText(pl,Turtle::label_);
   }
diff --git a/srv/SetLabel.srv b/srv/SetLabel.srv
index 772f305d6f2141ced57f2db61c18fe9509e53105..4e50d87f6cc6e82bf851413fe933192435a4e7ad 100644
--- a/srv/SetLabel.srv
+++ b/srv/SetLabel.srv
@@ -1,2 +1,5 @@
 string name
+uint8 r
+uint8 g
+uint8 b
 uint8 on
\ No newline at end of file