diff --git a/src/WideAngleCameraSensor.cc b/src/WideAngleCameraSensor.cc
index a851287d..832df8c2 100644
--- a/src/WideAngleCameraSensor.cc
+++ b/src/WideAngleCameraSensor.cc
@@ -333,6 +333,12 @@ bool WideAngleCameraSensor::CreateCamera()
     case sdf::PixelFormatType::RGB_INT8:
       this->dataPtr->camera->SetImageFormat(gz::rendering::PF_R8G8B8);
       break;
+    case sdf::PixelFormatType::L_INT8:
+      this->dataPtr->camera->SetImageFormat(gz::rendering::PF_L8);
+      break;
+    case sdf::PixelFormatType::L_INT16:
+      this->dataPtr->camera->SetImageFormat(gz::rendering::PF_L16);
+      break;
     default:
       gzerr << "Unsupported pixel format ["
         << static_cast<int>(pixelFormat) << "]\n";
@@ -367,7 +373,9 @@ void WideAngleCameraSensor::OnNewWideAngleFrame(
 {
   std::lock_guard<std::mutex> lock(this->dataPtr->mutex);
 
-  unsigned int len = _width * _height * _channels;
+  unsigned int bytesPerChannel = rendering::PixelUtil::BytesPerChannel(
+      this->dataPtr->camera->ImageFormat());
+  unsigned int len = _width * _height * _channels * bytesPerChannel;
   unsigned int bufferSize = len * sizeof(unsigned char);
 
   if (!this->dataPtr->imageBuffer)
@@ -467,6 +475,12 @@ bool WideAngleCameraSensor::Update(
       format = gz::common::Image::RGB_INT8;
       msgsPixelFormat = msgs::PixelFormatType::RGB_INT8;
       break;
+    case gz::rendering::PF_L8:
+      msgsPixelFormat = msgs::PixelFormatType::L_INT8;
+      break;
+    case gz::rendering::PF_L16:
+      msgsPixelFormat = msgs::PixelFormatType::L_INT16;
+      break;
     default:
       gzerr << "Unsupported pixel format ["
         << this->dataPtr->camera->ImageFormat() << "]\n";